




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第python编程scrapy简单代码实现搜狗图片下载器学习任何编程技术,都要有紧有送,今天这篇博客就到了放松的时候了,我们学习一下如何用scrapy下载图片吧。
目标站点说明
这次要采集的站点为搜狗图片频道,该频道数据由接口直接返回,接口如下:
/napi/pc/recommendkey=homeFeedDatacategory=feedstart=10len=10
/napi/pc/recommendkey=homeFeedDatacategory=feedstart=20len=10
其中只有start参数在发生变化,所以实现起来是比较简单的。
编写核心爬虫文件
importscrapy
classSgSpider(scrapy.Spider):
name=sg
allowed_domains=[]
base_url=/napi/pc/recommendkey=homeFeedDatacategory=feedstart={}len=10
start_urls=[base_url.format(0)]
defparse(self,response):
json_data=response.json()
ifjson_dataisnotNone:
img_list=json_data[data][list]
forimginimg_list:
yield{image_urls:[_[originImage]for_inimg[0][picList]]}
else:
returnNone
上述代码直接调用了第一页的接口数据,后续代码都是在对JSON数据中的图片地址进行提取。
其中最重要的一行代码如下:
yield{image_urls:[_[originImage]for_inimg[0][picList]]}
这里的image_urls是为了调用scrapy内置的图片下载中间件,固定的参数。
settings.py
该文件也需要进行修改,具体细节如下所示:
#用户代理设置
USER_AGENT=Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/95.0.4638.54Safari/537.36
#Obeyrobots.txtrules
ROBOTSTXT_OBEY=False
#下载间隔设置为3秒
DOWNLOAD_DELAY=3
#默认请求头
DEFAULT_REQUEST_HEADERS={
Accept:application/json,text/plain,*/*,
Accept-Encoding:gzip,deflate,br,
Accept-Language:zh-CN,zh;q=0.9,
HOST:,
#开启ImagesPipeline图片保存管道
ITEM_PIPELINES={
scrapy.pipelines.images.ImagesPipeline:1,
#图片存储文件夹
IMAGES_STORE=images
运行代码图片就会自动进行下载,保存到images目录中,下载完毕输出如下信息,本次仅采集第一页数据,顾得到40张图片。
如果你代码运行之后,没有下载到目标图片,请确定是否出现如下BUG。
ImagesPipelinerequiresinstallingPillow4.0.0
解决办法非常简单,安装Pillow库即可。
还存在一个问题是文件名是动态的,看起来有点乱。
在pipelines.py文件中增加一个自定义文件名称的数据管道。
classSogouImgPipeline(ImagesPipeline):
defget_media_requests(self,item,info):
name=item[name]
forindex,urlinenumerate(item[image_urls]):
yieldRequest(url,meta={name:name,index:index})
deffile_path(self,request,response=None,info=None):
#名称
name=request.meta[name]
#索引
index=request.meta[index]
filename=u{0}_{1}.jpg.format(name,index)
print(filename)
returnfilename
上述代码的主要功能是重新命名了图片文件名,下面同步修改SgSpider类中的相关代码。
defparse(self,response):
json_data=response.json()
ifjson_dataisnotNone:
img_list=json_data[data][list]
forimginimg_list:
yield{
name:img[0][title],
image_urls:[_[originImage]for_inimg[0][picList]],
else:
returnNone
再次运行代码,图片保存之后,文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽省芜湖市芜湖县2025-2026学年数学三上期末检测模拟试题含解析
- 知识产权培训课件图片
- 琵琶行教学课件设计
- 专业复习规划中级经济师试题及答案
- 销售量递增策略与实施路径
- 水利水电工程电气系统设计理解及试题及答案
- 贷款担保合同书
- 工程经济试题分析方法试题及答案
- 2025年公共关系学备考策略与试题总结
- 电子商务供应链管理协议
- 工艺安全信息管理培训课件
- MSC干细胞教学课件
- 无劳动关系证明
- 设备日常维护保养检查评分表
- 国有股权转让法律意见书
- 监理规划(精装修)(DOC)
- 《守株待兔》“课本剧”背景PPT
- 互联网+大学生创新创业项目计划书范本-智能外卖柜项目创业计划书
- 闽教版英语五年级下知识点归纳及练习
- 酒店开业筹备计划表
- (矿业有限公司)安全生产责任制度+安全生产责任制
评论
0/150
提交评论