ImagesPipline ---是scrapy爬蟲中用到的用於下載圖片的一個方法
文章所提供的代碼都是自己學習的代碼的路上經過測試已經成功的代碼
- 查看json地址
鼠標經過滑動就會在network或者網絡選項卡中的js選項卡中看到一條json數據,以下邊這條json數據為例,前半部分是網頁的地址image.so.com,ch=pet(說明搜索的內容是寵物),sn=30(說明從起始頁開始,一頁是30張圖片,那麼鼠標再次滑動,就會看到sn=60)
- cmd命令創建project
按照下邊的紅色標記進行操作。最終創建的文件夾在document裡邊可以顯示。
- 打開編輯器
首先修改setting.py文件
修改ROBOTSTXT_OBEY (如果不修改這個,就會出現程序運行成功,但是沒有文件下來保存)
<code>ROBOTSTXT_OBEY = True/<code>
- 啟用ImagesPipline
<code>ITEM_PIPELINES = {
# 'image.pipelines.ImagePipeline': 300,
'scrapy.pipelines.images.ImagesPipeline':1,
}
IMAGES_STORE='download_images'/<code>
- 實現ImageSpider
<code># -*- coding: utf-8 -*-
import scrapy
import json
from scrapy import Request
class ImagesSpider(scrapy.Spider):
# 文件初始地址
BASE_URL='https://image.so.com/zjl?ch=beauty&sn=%s&listtype=new&temp=1'
# 初始為第一個圖片
start_index=0
# 最大下載數量是200張
MAX_DOWNLOAD_NUM=200
name = 'images'
allowed_domains = ['image.so.com']
start_urls = [BASE_URL % 0]
def parse(self, response):
# json.loads處理json地址
infos=json.loads(response.body.decode('utf8'))
# for循環infos 可以得到有關於圖片的一個個json數據,info【】提取到圖片的地址
yield{'image_urls':[info['qhimg_url'] for info in infos['list']]}
\t\t\t#一頁的數據為30,一次解析完數據之後加上30個數據,作為第二頁的起始數據
self.start_index+=infos['count']
\t\t #判斷是否滿足200的最大下載數量
if infos['count']>0 and self.start_index<self.max> #繼續請求下一個json地址的數據
yield Request(self.BASE_URL % self.start_index)/<self.max>/<code>
- 運行
<code>scrapy crawl images/<code>
-----有疑問可以私信聯繫
閱讀更多 國家301實驗室 的文章