scrapy爬取图片并下载报错ValueError:Missing scheme in request url: h解决办法

这里我直接说解决办法了

修改前

 

修改后

images_url = response.xpath("//a[@class='l mr11']/img/@src").extract_first()       # 图片地址
item['images_url'] = images_url
images_url = response.xpath("//a[@class='l mr11']/img/@src").extract_first()       # 图片地址
list = []
       
list.append(images_url)
       
item['images_url'] = list

一上问题就解决了

顺便给大家看一下其他的相关配置吧

spider请求地址拿到图片地址后,我们首先配置一下settings.py

ITEM_PIPELINES = {
    'books.pipelines.BooksPipeline': 300,
    'scrapy.pipelines.images.ImagesPipeline': 1,
}


IMAGES_URLS_FIELD = "images_url"        # image_url是在items.py中配置的网络爬取得图片地址
print("********************************images_url", IMAGES_URLS_FIELD)
#配置保存本地的地址
project_dir = os.path.abspath(os.path.dirname(__file__))            #获取当前爬虫项目的绝对路径
IMAGES_STORE = os.path.join(project_dir, 'images')      #组装新的图片路径
IMAGES_MIN_HEIGHT = 100                 #设定下载图片的最小高度
IMAGES_MIN_WIDTH = 100                  #设定下载图片的最小宽度
IMAGES_EXPIRES = 90  #90天内抓取的都不会被重抓

有些配置可加可不加

IMAGES_URLS_FIELD

IMAGES_SETORE

以上两个配置是必须加的,

还有就是'scrapy.pipelines.images.ImagesPipeline': 1,

下面我们来看看pipelines.py的相关配置

#既然要重写,记得提前引入
from scrapy.pipelines.images import ImagesPipeline


class ArticleImagePipeline(ImagesPipeline):
    # 重载ImagePipeline中的item_completed方法,获取下载地址
    def item_completed(self, results, item, info):
        print("----------------------------------", results)
        for ok, value in results:   #通过断点可以看到图片路径存在results内
            image_file_path = value['path'] #将路径保存在item中返回
            item['front_image_path'] = image_file_path
        return item

最后就是items.py了

images_url = scrapy.Field()
front_image_path = scrapy.Field()

以上就是所有内容

 

主要是解决问题,其他的都是次要的,有什么问题欢迎加入小编建立的python web前端,小程序交流群 QQ群: 1102727334

一起学习共同进步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值