迭代列表时,项永远不会到达管道

时间:2018-03-14 09:41:08

标签: python scrapy scrapy-pipeline

我对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”)。但抓取单个网站始终有效。这种行为可能是什么原因?

0 个答案:

没有答案