python pil保存图片_python爬取百度图片并保存到本地
生活随笔
收集整理的這篇文章主要介紹了
python pil保存图片_python爬取百度图片并保存到本地
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
安裝scrapy
pip install Scrapy
進入終端,切換到自己項目代碼的工作空間下,執(zhí)行
scrapy startproject baidu_pic_spider
生成如下工程文件:
images是自己創(chuàng)建的用于存放爬到的圖片目錄。
在spiders目錄下創(chuàng)建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): # 定義解析函數(shù)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# 將帶關鍵詞參數(shù)的url交給request函數(shù)解析,返回的response通過get_pic回調函數(shù)進一步分析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數(shù)據(jù)response_dict = json.loads(response_json) # 轉化為字典response_dict_data = response_dict['data'] # 圖片的有效數(shù)據(jù)在data參數(shù)中for pic in response_dict_data: # pic為每個圖片的信息數(shù)據(jù),dict類型if pic:item['search_word'] = response.meta['search_word'] # 搜索關鍵詞賦值item['pic_url'] = [pic['middleURL']] # 百度圖片搜索結果url (setting中pic_url應該為數(shù)組形式)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 series转int_分享
- 下一篇: c++ 浮点数转换成字符串_Python