scrapy中遇到的ValueError: Missing scheme in request url:问题解决

昨天在爬寻医问药网站的时候出现了一个没有遇到过的问题:
在这里插入图片描述

ValueError: Missing scheme in request url:

查了百度,bings都没能解决,归纳起来网上的解决办法围绕的都是图片路径等详细问题,归根结底就是url并不完整,可以单纯地通过:

url = "http"+response.xpath("....")[0]

这样的方式解决。

解决办法

然鹅,我的代码在前面几步都是能完整输出新的url值的,意味着url足够完整,所以不是上述问题。
最后发现有些大神们的代码会在request的括号后面多加一句

dont_filter=Ture

问题就被完美解决了!

原因分析

查了一下,scrapy会对request的URL去重(RFPDupeFilter),加上dont_filter则告诉它这个URL不参与去重。
两种方法能够使 requests 不被过滤:

  1. 在 allowed_domains 中加入 url
  2. 在 scrapy.Request() 函数中将参数 dont_filter=True 设置为 True

意思就是,scrapy可能会处于一些原因把没有问题的url过滤掉,我们只有加上这样的命令才能防止丢失。

发布了22 篇原创文章 · 获赞 18 · 访问量 7182

猜你喜欢

转载自blog.csdn.net/weixin_43525427/article/details/102625364