我当前的spider只解析产品属性,而不是item['title']
。
我怎么把它们结合起来
页面示例:
https://universalmotors.ru/motorcycles/lifan/motorcycle-lifan-lf150-13-2017/
我的蜘蛛:
# -*- coding: utf-8 -*-
from scrapy.spiders import SitemapSpider as CrawlSpider
from ..items import DistPracticalItem
class SitemapSpider(CrawlSpider):
name = 'sitemap3'
allowed_domains = ['universalmotors.ru']
sitemap_urls = ['https://universalmotors.ru/sitemap.xml']
# sitemap_follow = ['deal']
# sitemap_rules = [(r'^https?://sz.*deal/[0-8]{1,8}\.html$', 'parse_item')]
sitemap_rules = [('/motorcycles/', 'parse_item')]
def parse_item(self, response):
item = DistPracticalItem()
# item['name'] = response.xpath('//h1[contains(@class,"good__title")]/text()').extract_first()
item['title'] = response.css("h1.good__title::text").extract()
# prop = response.xpath('normalize-space(//tr[@itemprop="additionalProperty"])').extract()
item['price'] = response.css('div.deal-info span.campaign-price').css('::text').extract_first()
# item['comments'] = response.css('div.comment div.total').css('::text').extract()
# return item
# for item in response.xpath('//tr[@itemprop="additionalProperty"]'):
for item in response.xpath('//tr[@itemprop="additionalProperty"]'):
yield {
'name': item.xpath('normalize-space(./*[@class="label_table"])').extract_first(),
'value': item.xpath('normalize-space(./*[@class="value_table"])').extract_first(),
# 'title': response.css("h1.good__title::text").extract()
}
我的目标是得到一个包含如下属性列表的已刮项目列表:
Title of the Item 1| Price 1 | Property 1, Property 2, property 3
Title of the Item 2| Price 2 | Property 1, Property 2, property 3
Title of the Item 3| Price 3 | Property 1, Property 2, property 3
你必须产生完整的项目,你想刮,你的代码只产生属性,而不是标题和价格。你知道吗
我修改了你的代码,它似乎是工作的预期。我删除了项目包括和一些意见,使它在我的机器上工作。你知道吗
请注意,我正在收集
item
变量中的所有信息,在本例中是dict
,在您的变量中是DistPracticalItem
。你知道吗您将得到以下架构:
希望我说得清楚。你知道吗
相关问题 更多 >
编程相关推荐