如何在Scrapy中处理DNSLookupError?

daupos2t  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(132)

我正在检查一堆网站响应状态并将它们导出到CSV文件。有几个网站有DNSLookupErrorNO WEBSITE FOUND,但没有在CSV文件中存储任何内容。我如何将DNSLookupError消息与URL一起存储到CSV文件中?

def parse(self, response):
    yield {
        'URL': response.url,
        'Status': response.status
    }
hfsqlsce

hfsqlsce1#

您可以使用errback函数来捕获DNS错误或任何其他类型的错误。请参阅下面的示例用法。

import scrapy
from twisted.internet.error import DNSLookupError

class TestSpider(scrapy.Spider):
    name = 'test'
    allowed_domains = ['example.com']

    def start_requests(self):
        yield scrapy.Request(url="http://example.com/error", errback=self.parse_error)

    def parse_error(self, failure):
        if failure.check(DNSLookupError):
            # this is the original request
            request = failure.request
            yield {
                'URL': request.url,
                'Status': failure.value
            }

    def parse(self, response):
        yield {
            'URL': response.url,
            'Status': response.status
        }

相关问题