如何使scrapy跟随无效链接?

2024-10-02 20:43:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我经常使用scrapy来检查长长的链接列表,看它们是否可用

我的问题是当链接格式不正确时(例如,没有以http://或https://开头),爬虫程序崩溃

ValueError: Missing scheme in request url: http.www.gobiernoenlinea.gob.ve/noticias/viewNewsUser01.jsp?applet=1&id_noticia=41492

我阅读了熊猫系列的链接列表,并检查了每一个链接。当响应可访问时,我将其记录为“ok”,否则记录为“dead”

import scrapy
import pandas as pd
from link_checker.items import LinkCheckerItem



class Checker(scrapy.Spider):
    name = "link_checker"


    def get_links(self):
        df = pd.read_csv(r"final_07Sep2018.csv")
        return df["Value"]

    def start_requests(self):
        urls = self.get_links()
        for url in urls.iteritems():
            index = {"index" : url[0]}
            yield scrapy.Request(url=url[1], callback=self.get_response, errback=self.errback_httpbin, meta=index, dont_filter=True)

    def get_response(self, response):
        url = response.url

        yield LinkCheckerItem(index=response.meta["index"], url=url, code="ok")

    def errback_httpbin(self, failure):
        yield LinkCheckerItem(index=failure.request.meta["index"], url=failure.request.url, code="dead")

我仍然对发现那些格式不正确的URL感兴趣。我如何验证它们,并让它们也“死”呢


Tags: importselfurlgetindexfailure链接response