0
我想抓取新闻文章和他们的评论与scrapy。就我而言,新闻文章及其评论位于不同的网页上,如以下示例所示。如何强制Scrapy刮掉文章网页后相应的评论网页?
(2)与文章相关的评论的链接。 http://www.theglobeandmail.com/opinion/editorials/if-britain-leaves-the-eu-will-scotland-leave-britain/article32480429/comments/
我希望我的程序能够理解(1)和(2)是相关的。另外,我想确保(2)在(1)之后被抓取,而不是在中间抓取其他网页。我使用以下规则来刮取新闻文章的网页和评论网页。
rules = (
Rule(LinkExtractor(allow = r'\/article\d+\/$'), callback="parse_articles"),
Rule(LinkExtractor(allow = r'\/article\d+\/comments\/$'), callback="parse_comments")
)
我试图在文章中解析函数的使用提出明确要求通话,如下图所示:
comments_url = response.url + 'comments/'
print('comments url: ', comments_url)
return Request(comments_url, callback=self.parse_comments)
但没有奏效。如何在抓取文章网页后立即要求抓取工具评论网页?
谢谢您的回复!它会转到相应的评论链接,但它仍然不会在文章页面后面留下评论页面。它刮擦了其间的其他物品。 – user7009553
@ user7009553是的,因为scrapy是异步的,它会并行地扫描多个链。因此,它可能会刮掉文章并安排评论请求,同时刮掉其他一些文章 - 但是您的链条不会丢失订单。在这种情况下,你的链是parse_article-> parse_comments-> yield item,所以你应该得到你期望的结果。 – Granitosaurus