python pil保存图片_python爬取百度图片并保存到本地
安装scrapy
pip install Scrapy
进入终端,切换到自己项目代码的工作空间下,执行
scrapy startproject baidu_pic_spider
生成如下工程文件:
images是自己创建的用于存放爬到的图片目录。
在spiders目录下创建baidu_pic_spider爬虫文件,search_word可改成自己需要的搜索词。
baidu_pic_spider.py
import scrapy, json
from scrapy.http import Request
from PicSpider.items import PicItem # 导入itemclass PicSpider(scrapy.Spider):name = "pic_spider"allowed_domains = ["http://image.baidu.com/"]start_urls = ["http://image.baidu.com"]def parse(self, response): # 定义解析函数search_word = '哈士奇' # 查找词,可修改baidu_pic_url = "https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word={0}&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&pn=60&rn=30&gsm=3c&1507915209449=".format(search_word) # 百度图片url# 将带关键词参数的url交给request函数解析,返回的response通过get_pic回调函数进一步分析yield Request(baidu_pic_url, meta={"search_word": search_word}, callback=self.get_pic, dont_filter=True)def get_pic(self, response): # 从图片list中获取每个pic的信息item = PicItem() # 实例化itemresponse_json = response.text # 存储返回的json数据response_dict = json.loads(response_json) # 转化为字典response_dict_data = response_dict['data'] # 图片的有效数据在data参数中for pic in response_dict_data: # pic为每个图片的信息数据,dict类型if pic:item['search_word'] = response.meta['search_word'] # 搜索关键词赋值item['pic_url'] = [pic['middleURL']] # 百度图片搜索结果url (setting中pic_url应该为数组形式)item['pic_name'] = pic['fromPageTitleEnc'] # 百度图片搜索结果对应的titleyield item
新建main.py文件,方便在pycharm中运行和调试爬虫。
main.py
# _*_ coding: utf-8 _*_from scrapy.cmdline import execute
import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__))) #设置工程目录
print(os.path.dirname(os.path.abspath(__file__)))execute(["scrapy","crawl","pic_spider"]).strip()
定义item字段
item.py
# -*- coding: utf-8 -*-import scrapyclass PicItem(scrapy.Item) :search_word = scrapy.Field() #搜索关键字pic_name = scrapy.Field() #图片标题pic_url = scrapy.Field() #图片urlpass
定义pipeline
pipeline.py
# -*- coding: utf-8 -*-class PicspiderPipeline(object):def process_item(self, item, spider):return item
在setting中对应部分修改ITEM_PIPELINES,并增加图片处理代码
settings.py
ITEM_PIPELINES = {'PicSpider.pipelines.PicspiderPipeline': 300,'scrapy.pipelines.images.ImagesPipeline' : 1,
}
#配置pipeline,设定需要进行处理的图片路径
IMAGES_URLS_FIELD = "pic_url"
# 设置图片下载后的存储路径,放到工程目录下images文件夹
# 获取当前目录绝对路径
project_dir = os.path.abspath(os.path.dirname(__file__))
# 获取images存储路径
IMAGES_STORE = os.path.join(project_dir,'images')# 设定处理图片的最小高度,宽度
IMAGES_MIN_HEIGHT = 100
IMAGES_MIN_WIDTH = 100
运行
run
main.py
python pil保存图片_python爬取百度图片并保存到本地相关推荐
- python爬取一张图片并保存_python爬取百度图片并保存到本地
安装scrapy pip install Scrapy 进入终端,切换到自己项目代码的工作空间下,执行 scrapy startproject baidu_pic_spider 生成如下工程文件: i ...
- python爬取一张图片并保存_python爬取网页图片并保存到本地
先把原理梳理一下:首先我们要爬取网页的代码,然后从中提取图片的地址,通过获取到的地址来下载数据,并保存在文件中,完成. 下面是具体步骤: 先确定目标,我挑选的是国服守望先锋的官网的英雄页面,我的目标是 ...
- 使用python和PyQt5编写爬取百度图片的界面工具
使用python和PyQt5编写爬取百度图片的界面工具 本篇文章的主要内容是展示我个人编写的,以界面小工具的方式爬取百度上面的图片,功能很单一,根据关键词爬取图片,代码很简单,新手上路请多指教. 代码 ...
- node.js 爬虫 实现爬取网页图片并保存到本地
node.js 爬虫 实现爬取网页图片并保存到本地 没有废话直接看代码 /*** 请求网站数据* 将数据保存本地文件*/ //不同协议引用不同模块,http https const http = re ...
- Python依据单个关键词爬取百度图片
最近由于工作需要要使用大量的水果蔬菜图片,故萌生使用爬虫抓取百度图片的想法,并未用于商业用途,只是为了测试数据.所以并未使用多线程.框架等技术. 由于百度图片是动态加载的,发现搜索关键词后action ...
- java爬取网页并保存_第九讲:Python爬取网页图片并保存到本地
上一讲我们说了如何把网页的数据通过分析后存储到数据库,我们这次讲如何将网页上的图片提取并下载到本地. 思路如下: 我们本次要爬取的是昵图网首页的图片. 1.首先分析我们要爬取的网页的代码结构,每个网页 ...
- 第九讲:Python爬取网页图片并保存到本地
上一讲我们说了如何把网页的数据通过分析后存储到数据库,我们这次讲如何将网页上的图片提取并下载到本地. 思路如下: 我们本次要爬取的是昵图网首页的图片. 1.首先分析我们要爬取的网页的代码结构,每个网页 ...
- python爬取一张图片并保存_第九讲:Python爬取网页图片并保存到本地
上一讲我们说了如何把网页的数据通过分析后存储到数据库,我们这次讲如何将网页上的图片提取并下载到本地. 思路如下: 我们本次要爬取的是昵图网首页的图片. 1.首先分析我们要爬取的网页的代码结构,每个网页 ...
- python3.7 根据关键词 爬取百度图片并下载到本地
URL地址:http://image.baidu.com/search/flip?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1 ...
最新文章
- 5月19-20日WebRTCon 2018 梳理全球WebRTC技术实践与案例
- 40个最好的Tumblr主题
- Java线程池,从使用到原理
- 【LeetCode笔记】560. 和为K的子数组(Java、前缀和、哈希表)
- springmvc防止重复提交拦截器
- Python连接两个字符串并去除首尾重复子串
- 【C++】CCFCSP201803-1跳一跳
- java为什么要设计包装类_Java 为什么需要包装类
- Notepad++使用SQL格式化插件
- 【AI视野·今日Robot 机器人论文速览 第二十三期】Tue, 28 Sep 2021
- TCP的SYN报文可以携带payload吗?
- Postman如何设置成中文?(汉化)
- 软件编程推荐书籍目录
- 宝塔自动备份网站到FTP空间
- c语言中scanf()用法,C语言中scanf()的用法!
- html实现跳跳棋游戏,原生JS实现的跳一跳小游戏完整实例
- 扡扫机器人_评测:不会满场乱飞奔 这台Anker扫拖机器人指哪儿扫哪儿
- 生活时尚酒店品牌JOJOE进军中国,首批选址7个城市,未来将开设至少1300家门店 | 美通社头条...
- 模具行业ERP信息化(转)
- cip核字号验证_cip核字号(cip数据核字号查询官网)