我对scrapy很新。我正在抓取一个提供网站列表的网站。我想抓取这些网站的某些页面。
示例:siteX.com具有以下列表:
http://siteA.com
http://siteB.com
http://siteC.com
所有这些网页都有相同结构的子网站,每个网站需要两个额外的请求才能获取数据:
http://siteA.com/test/1
http://siteA.com/test/2
http://siteB.com/test/1
http://siteB.com/test/2
http://siteC.com/test/1
http://siteC.com/test/2
我可以使用以下代码实现一个条目:
def parse(self, response):
entry = response.css("list").extract()[0]
details_page_link = prefix + entry
request = scrapy.Request(details_page_link, callback=self.parse_subpage)
request.meta["foo"] = foo
yield request
def parse_subpage(self, response):
foo = response.meta["foo"]
foo["more"] = response.css("more").extract_first()
link_to_sub_page = response.css("link").extract_first()
request = scrapy.Request(link_to_sub_page, callback=self.parse_sub_sub_page)
request.meta["foo"] = foo
yield request
def parse_sub_subpage(self, response):
foo = response.meta["foo"]
foo["fina"] = response.css("something").extract_first()
yield foo
然后将Foo放入管道中的数据库中。我现在的问题是当我遍历源网站上的列表时,并非所有项目都进入管道:
def parse(self, response):
for entry in response.css("div.container tbody
a::attr(href)").extract():
details_page_link = prefix + entry
request = scrapy.Request(details_page_link, callback=self.parse_subpage)
request.meta["foo"] = foo
yield request
它完全是随机的 - 它并不总是相同的站点,我没有在日志中看到任何错误(“LOG_LEVEL”:“DEBUG”)。但抓取单个网站始终有效。这种行为可能是什么原因?