Scrapy不将所有输出写入CSV

时间:2018-05-10 20:33:23

标签: python web-scraping scrapy

我正在使用Scrapy来ping一堆网页,并确定哪些主页不再存在。

我的蜘蛛的完整代码非常简单,并在下面转载:

class BrokenLinksSpider(scrapy.Spider):
name = 'broken-link-spider'

def __init__(self, id_homepage_mapping, *args, **kwargs):
    self.org_homepages = id_homepage_mapping
    self.download_timeout = 10

def start_requests(self):
    for qId, url in self.org_homepages.items():
        if url.endswith("/"):
            url = url[0:-1]
        yield scrapy.Request(url,
            callback=self.complete_callback,
            errback=self.error_callback,
            dont_filter=True,
            meta={ 'handle_httpstatus_all': True, 'id': id })

def complete_callback(self, response):
    if str(response.status)[0] in ("4", "5"):
        yield BrokenLinkCheckerItem(
            url=response.request.url,
            status=response.status,
            qId=response.meta['id'])

def error_callback(self, failure):
    yield BrokenLinkCheckerItem(
        url=failure.request.url,
        status=repr(failure),
        qId=failure.request.meta['id'])

在我的应用程序的日志中,我可以在scrapy统计信息收集器中看到有异常提取大约40,000个链接。但是,我写的csv输出文件只包含大约8k行。此外,CSV文件似乎包含StatsCollector报告的所有不同类型的异常,每个异常的实例更少。

所以我的问题是,为什么statsCollector报告的内容和实际写入CSV的内容之间存在这样的差异?鉴于我对errback回调函数的理解,不应该将所有这些异常写入CSV吗?

谢谢!

0 个答案:

没有答案