问题解决:raise ValueError('Missing scheme in request url: %s' % self._url) ValueError: Missing schem

今天使用scrapy爬取图片时,发现这个错误:

raise ValueError('Missing scheme in request url: %s' % self._url)
ValueError: Missing scheme in request url: //images2015.cnblogs.com/news_topic/20161020185521154-1185360701.png

显然,scrapy中pipeline在下载图片的过程中,无法识别该目标url。
web中以//开头的目标链接为“相对协议”,也就是前面省去了 http: 或 https: 字样,这样做的好处是浏览器能够根据你的网站所采用的协议来自动加载 CDN 上托管的文件。

爬取链接文件过程中,应该通过正则表达式将相对协议改为正确的目标url

修改前:

front_image = response.meta.get("front_image_url", "")
article_item["front_image_url"] = [front_image]  # pipeline下载图片一定要传list

修改后:

import re

front_image = response.meta.get("front_image_url", "")
if re.match("^(//).*", front_image):
	front_image = "https:" + front_image
article_item["front_image_url"] = [front_image]  # pipeline下载图片一定要传list
发布了673 篇原创文章 · 获赞 644 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/zhaohaibo_/article/details/104460090