【发布时间】:2019-11-25 12:45:58
【问题描述】:
我找到了几个关于如何通过覆盖类OrderItem以特定顺序提取数据的解决方案
class OrderedItem(scrapy.Item):
def __init__(self, *args, **kwargs):
self._values = OrderedDict()
if args or kwargs:
for k, v in six.iteritems(dict(*args, **kwargs)):
self[k] = v
我有更多正在提取的数据,而且每次的顺序都不同 def repr(自我): 返回 json.dumps(OrderedDict(self), ensure_ascii = False)
class NewItem(OrderedItem):
title = scrapy.Field()
price = scrapy.Field()
然后在爬虫脚本中,我定义了一个NewItem对象的实例
def parse(self, response):
items = NewItem()
items['title'] = response.xpath(
"//span[@class='pdp-mod-product-badge-title'/text()").extract_first()
items['price'] = response.xpath("//span[contains(@class, 'pdp-price')]/text()").extract_first()
yield items
【问题讨论】: