介绍
这篇文章运用简单易懂的例子给大家介绍使用scrapy ImagesPipeline爬取图片资源,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
这是一个使用scrapy的ImagesPipeline爬取下载图片的示例,生成的图片保存在爬虫的完整的文件夹里。
scrapy startproject DoubanImgs cd DoubanImgs
scrapy genspider download_douban douban.com
vim蜘蛛/download_douban。py
#=utf - 8编码 从scrapy。蜘蛛进口蜘蛛 进口再保险 从scrapy导入请求 从. .项目导入DoubanImgsItem 类download_douban(蜘蛛): name=& # 39; download_douban& # 39; default_headers={ & # 39;接受# 39;:& # 39;text/html, application/xhtml + xml应用程序/xml; q=0.9,图像/webp */*; q=0.8 & # 39; & # 39;Accept-Encoding& # 39;: & # 39; gzip、缩小,sdch、br # 39; & # 39;接收语言# 39;:& # 39;应用,zh型;q=0.8, en; q=0.6 & # 39; & # 39;cache - control # 39;: & # 39;信息=0 & # 39; & # 39;连接# 39;:& # 39;保活# 39; & # 39;主机# 39;:& # 39;www.douban.com& # 39; & # 39;用户代理# 39;:& # 39;Mozilla/5.0(麦金塔电脑;Intel Mac OS X 10 _11_4) AppleWebKit/537.36 (KHTML,像壁虎)Chrome/52.0.2743.116 Safari 537.36 & # 39;, } def __init__(自我、url=& # 39; 1638835355 & # 39;, * args, * * kwargs): 自我。allowed_domains=[& # 39; douban.com& # 39;】 自我。start_urls=[] 因为我在xrange (23): 如果我==0: page_url=& # 39; http://www.douban.com/photos/album/& # 39;+网址 其他: page_url=& # 39; http://www.douban.com/photos/album/& # 39;+ + & # 39;url/, # 63;开始=& # 39;+ str(我* 18) self.start_urls.append (page_url) 自我。url=url #父亲基函数的调用 #超级(download_douban,自我)。__init__ (* args, * * kwargs) def start_requests(自我): 在self.start_urls url: 收益率请求(url=url,标题=self.default_headers调=self.parse) def解析(自我,反应): list_imgs=response.xpath (& # 39;//div [@class=皃hotolst clearfix"]//img/@src& # 39;) .extract () 如果list_imgs: 项=DoubanImgsItem () 项目(& # 39;image_urls& # 39;]=list_imgs 收益项
vim设置。py
# - * -编码:utf - 8 - * # DoubanImgs Scrapy设置项目 # #为简单起见,这个文件包含> # - * -编码:utf - 8 - * #定义这里刮的模型项 # #看文档: # https://doc.scrapy.org/en/latest/topics/items.html 进口scrapy 从scrapy导入字段 类DoubanImgsItem (scrapy.Item): #这里定义的字段项: # name=scrapy.Field () image_urls=字段() 图像=字段() image_paths=字段()
vim管道。py
# - * -编码:utf - 8 - * #定义项目管道 # #不要# 39;t忘记添加你的管道ITEM_PIPELINES设置 #见:http://doc.scrapy.org/en/latest/topics/item-pipeline.html 从scrapy.pipelines。图片导入ImagesPipeline 从scrapy。异常进口DropItem 从scrapy导入请求 从scrapy导入日志 类DoubanImgsPipeline(对象): def process_item(自我,物品,蜘蛛): 返回项目 类DoubanImgDownloadPipeline (ImagesPipeline): default_headers={ & # 39;接受# 39;:& # 39;图像/webp图像/* */*;q=0.8 & # 39; & # 39;accept-encoding& # 39;: & # 39; gzip、缩小,sdch、br # 39; & # 39;接收语言# 39;:& # 39;应用,zh型;q=0.8, en; q=0.6 & # 39; & # 39;饼干# 39;:& # 39;报价=yQdC/AzTaCw& # 39; & # 39;推荐人# 39;:& # 39;https://www.douban.com/photos/photo/2370443040/& # 39; & # 39;用户代理# 39;:& # 39;Mozilla/5.0(麦金塔电脑;Intel Mac OS X 10 _11_4) AppleWebKit/537.36 (KHTML,像壁虎)Chrome/52.0.2743.116 Safari 537.36 & # 39;, } def get_media_requests(自我、项目信息): 项image_url [& # 39; image_urls& # 39;): self.default_headers[& # 39;推荐人# 39;]=image_url 收益率请求(image_url头=self.default_headers) def item_completed(自我,结果,项目,信息): image_paths=[x [& # 39; path & # 39;]为好,x结果如果好) 如果不是image_paths: 提高DropItem(“项目不包含images") 项目(& # 39;image_paths& # 39;]=image_paths 返回项目
关于使用scrapy ImagesPipeline爬取图片资源就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。