scrapy爬蟲框架之ImagePipeline

2021-08-26 20:30:40 字數 3217 閱讀 3144

item pipeline

item在spider中獲取後,將傳送到item pipeline中,執行對item的後續處理。每個item pipeline元件實現了簡單方法,它們接收item並執行一些操作,決定丟棄item還是讓其通過pipeline。

item pipeline的作用:

當然,你也可以編寫自己的item pipeline,不過你需要實現以下方法:

process_item(item,spider)

每個item pipeline都需要呼叫該方法,並且返回乙個item物件或者丟擲dropitem異常,item被丟棄後將不被pipeline處理。

引數: item(item物件)-被爬取的item

spider(spider物件)-爬取該是特麼的spider

除此之外,還可以實現以下方法:

open_spider(spider):當spider開啟時呼叫。

close_spider(spider):當spider關閉時呼叫。

imagepipeline

自定義imagepipeline時,最重要的是過載get_media_requests(self,item,info)和item_completed(self,results,item,info)這兩個函式。

get_media_requests(self,item,info):通過該函式為image_urls中的每乙個url生成乙個request。

for url in item['image_url']:  

self.default_headers['referer']=url

yield request(url,headers=self.default_headers)

def item_completed(self, results, item, info):

image_paths = [x['path'] for ok, x in results if ok]

if not image_paths:

raise dropitem("item contains no images")

item['image_paths'] = image_paths

return item

下面以爬取尤果網上的美女為例,說明整個過程。

1、item.py,新增image_url與name欄位,**如下:

import scrapy

class ugirlsitem(scrapy.item):

# define the fields for your item here like:

image_url=scrapy.field()

name=scrapy.field()

2、在spider/ugirl.py 中寫imagespider的**

# -*- coding: utf-8 -*-

import scrapy

from scrapy import request

from ..items import ugirlsitem

class ugirlspider(scrapy.spider):

name = 'ugirl'

allowed_domains = ['ugirls.com']

start_urls =

for i in range(1,43):

def start_requests(self):

for url in self.start_urls:

yield request(url=url,callback=self.parse)

def parse(self, response):

item=ugirlsitem()

name=response.xpath('//div[@class="magazine_info"]/h2/a/text()').extract()

image_url=response.xpath('//img[@class="magazine_img"]/@src').extract()

item['name']=name

item['image_url']=image_url

yield item`

3、在pipelines.py中自定義imagepipeline的**

最後執行scrapy crawl ugirl命令,爬取結果如下圖所示:

這裡只是簡單的應用了imagepipeline爬取的方便功能,我們還可以建立縮圖和對進行分類。

Python之scrapy框架爬蟲

scrapy命令詳解 可能是如今最全最簡單的scrapy命令解釋 明天上班,又要爬 現在每天做的工作有50 的時間爬 40 的時間清理資料,10 寫報告。若想自學資料分析,側重點很重要,我當初把大部分經歷放在了python的pandas numpymatplotlib上面,其他時間一部分放在sql身...

python爬蟲框架之Scrapy

scrapy 是乙個爬蟲框架,提取結構性的資料。其可以應用在資料探勘,資訊處理等方面。提供了許多的爬蟲的基類,幫我們更簡便使用爬蟲。基於twisted 準備步驟 首先安裝依賴庫twisted 在這個 下面去尋找符合你的python版本和系統版本的twisted pip install 依賴庫的路徑 ...

爬蟲之 scrapy 框架總結

寫在前面的話 最近重新學了一下scrapy框架,之前沒學好,現在總結一下 以便以後重灌不需要重新找資料 需要三個庫 lxml,twist,pywin32 一般前兩個都有 如果有問題輸入下面這句 1.items.py存放資料模型 三個方法最常用 注意啟用pipline,在setting.py中設定 2...