爬蟲圖像文件存儲,python爬取一張圖片并保存_python爬取百度圖片并保存到本地

 2023-11-18 阅读 28 评论 0

摘要:安裝scrapy pip install Scrapy 爬蟲圖像文件存儲,進入終端,切換到自己項目代碼的工作空間下,執行 scrapy startproject baidu_pic_spider 生成如下工程文件: images是自己創建的用于存放爬到的圖片目錄。 在spiders目錄下創建baidu_pic_spider爬蟲文件

安裝scrapy

pip install Scrapy

爬蟲圖像文件存儲,進入終端,切換到自己項目代碼的工作空間下,執行

scrapy startproject baidu_pic_spider

生成如下工程文件:

images是自己創建的用于存放爬到的圖片目錄。

在spiders目錄下創建baidu_pic_spider爬蟲文件,search_word可改成自己需要的搜索詞。

python批量爬取圖片、baidu_pic_spider.py

import scrapy, json

from scrapy.http import Request

python爬取網站?from PicSpider.items import PicItem # 導入item

class PicSpider(scrapy.Spider):

name = "pic_spider"

python處理Excel。allowed_domains = ["http://image.baidu.com/"]

start_urls = ["http://image.baidu.com"]

def parse(self, response): # 定義解析函數

如何利用python爬取圖片?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() # 實例化item

response_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'] # 百度圖片搜索結果對應的title

yield 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 scrapy

class PicItem(scrapy.Item) :

search_word = scrapy.Field() #搜索關鍵字

pic_name = scrapy.Field() #圖片標題

pic_url = scrapy.Field() #圖片url

pass

定義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

運行

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/177600.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息