python怎样导入scrapy_python爬虫如何使用内置的scrapy内置下载文件?

1b2d5651355af85966f1a4dd9c7381c7.png

为了能使用python爬虫能够高效率的爬虫下载文件,我们可以使用内置的scrapy内置下载文件。内置的scrapy内置下载文件除了高效率外,可以方便的指定文件存储的路径,并且能够避免重新下载最近已经下载过的数据。本文介绍python爬虫使用内置的scrapy内置下载文件的优点、相关步骤和具体实例代码。

一、为什么要选择scrapy内置的下载文件?

1、避免重新下载最近已经下载过的数据;

2、可以方便的指定文件存储的路径;

3、可以将下载的图片转换成通用的格式,如:png,jpg等;

4、可以方便地生成缩略图;

5、可以方便地检测图片的宽和⾼,确保它们满足最小限制;

6、异步下载,效率非常高。

二、使用images pipeline下载文件步骤如下:

第一步,在items文件中定义两个属性,分别为image_urls以及images,这两个属性名字不能随意修改。image_urls = scrapy.Field() # 图片的url

images = scrapy.Field() # 路径

第二步,编写爬虫程序,需要注意的是image_urls用来存储需要下载文件的url链接,需要给⼀个列表;pic_url = pic.xpath('./a/img/@src').extract_first()

pic_url = response.urljoin(pic_url)

item['image_urls'] = [pic_url]

第三步,在settings中指定路径IMAGES_STORE = xxxxxxx,当图片下载完成后,scrapy会把图片下载的相关信息存储到item的images属性中,如下载路径、下载的url和图片校验码等;import os

IMAGES_STORE = os.path.join(os.path.dirname(__file__), 'result_pic')

第四步,在settings中做配置,开启内置的图片管道,此时可以不用自带的管道。'scrapy.pipelines.images.ImagesPipeline':1

三、具体代码# 爬虫代码

import scrapy

from day21.vehicle_home.vehicle_home.items import VehicleHomeItem

class VehPicSpider(scrapy.Spider):

name = 'veh_pic'

allowed_domains = ['car.autohome.com.cn']

base_url = 'https://car.autohome.com.cn/photolist/series/18/p{}/'

start_urls = [base_url.format(1)]

def parse(self, response):

# 获取图片标签列表

pic_lists = response.xpath('//ul[@id="imgList"]/li')

for pic in pic_lists:

pic_url = pic.xpath('./a/img/@src').extract_first()

# 上述获取的url需要进一步补全

pic_url = response.urljoin(pic_url)

item = VehicleHomeItem()

item['image_urls'] = [pic_url]  # 传递列表

print(item)

yield item

# 翻页逻辑

for page in range(2, 3):

next_url = self.base_url.format(page)

yield scrapy.Request(next_url)

# settings 代码,只给出关键部分

# 开启内置管道

ITEM_PIPELINES = {

# 'vehicle_home.pipelines.VehicleHomePipeline': 300,

'scrapy.pipelines.images.ImagesPipeline': 1,

}

# 指定图片存放路径

import os

IMAGES_STORE = os.path.join(os.path.dirname(__file__), 'result_pic')

# items 代码

import scrapy

class VehicleHomeItem(scrapy.Item):

image_urls = scrapy.Field()  # 图片的url

images = scrapy.Field()  # 图片路径

以上就是python爬虫使用内置的scrapy内置下载文件的相关解释,大家直接套入代码使用即可。更多python爬虫进阶推荐:python爬虫进阶教程。

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_39975683

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值