我经常使用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感兴趣。我如何验证它们,并让它们也“死”呢
您只需检查它是否以
https
和http
开头如果不是,则手动预加
http
相关问题 更多 >
编程相关推荐