我很难按照自己的意愿构建零碎的数据。我的蜘蛛从一个页面获取一些数据,然后按照该页面上的链接列表获取下一个页面的链接
def parse_page(self, response):
links = response.css(LINK_SELECTOR).extract()
data = {
'name': response.css(NAME_SELECTOR).extract_first(),
'date': response.css(DATE_SELECTOR).extract(),
}
for link in links:
next_link = response.urljoin(link)
yield scrapy.Request(next_link, callback=self.parse_url, meta={'data': data})
def parse_url(self, response):
data = response.meta['data']
data['url'] = response.css(a::attr(href)').get()
yield data
我希望获得具有以下结构的数据:
{'name': name, 'date': date, 'url': [url1, url2, url3, url4]}
而不是
{'name': name, 'date': date, 'url': url1}
{'name': name, 'date': date, 'url': url2}
{'name': name, 'date': date, 'url': url3}
{'name': name, 'date': date, 'url': url4}
我尝试使用items,但不知道如何将数据从parse_url传递到parse_page函数。我该怎么做
提前谢谢
以下是实现这一目标的方法之一。有一个库inline_requests,它将帮助您获得预期的输出
它产生的输出:
您可以使用scrapy的coroutine support非常容易地完成这项工作
代码如下所示:
相关问题 更多 >
编程相关推荐