Я очищаю этот сайт, и я использую Scrapy в качестве средства. Однако у меня проблемы с XPath. Я не совсем уверен, что происходит:
Почему это работает:
def parse_item(self, response):
item = BotItem()
for title in response.xpath('//h1'):
item['title'] = title.xpath('strong/text()').extract()
item['wage'] = title.xpath('span[@class="price"]/text()').extract()
yield item
и следующий код нет?
def parse_item(self, response):
item = BotItem()
for title in response.xpath('//body'):
item['title'] = title.xpath('h1/strong/text()').extract()
item['wage'] = title.xpath('h1/span[@class="price"]/text()').extract()
yield item
Я также хочу извлечь XPath для:
//div[@id="description"]/p
Но я не могу, потому что он находится за пределами h1
узла. Как я могу это достичь? Мой полный код:
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from bot.items import BotItem
class MufmufSpider(CrawlSpider):
name = 'mufmuf'
allowed_domains = ['mufmuf.ro']
start_urls = ['http://mufmuf.ro/locuri-de-munca/joburi-in-strainatate/']
rules = (
Rule(
LinkExtractor(restrict_xpaths='//div[@class="paginate"][position() = last()]'),
#callback='parse_start_url',
follow=True
),
Rule(
LinkExtractor(restrict_xpaths='//h3/a'),
callback='parse_item',
follow=True
),
def parse_item(self, response):
item = BotItem()
for title in response.xpath('//h1'):
item['title'] = title.xpath('strong/text()').extract()
item['wage'] = title.xpath('span[@class="price"]/text()').extract()
#item['description'] = title.xpath('div[@id="descirption"]/p/text()').extract()
yield item
python,xpath,scrapy,