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欄位,**如下:
2、在spider/ugirl.py 中寫imagespider的**import scrapy
class ugirlsitem(scrapy.item):
# define the fields for your item here like:
image_url=scrapy.field()
name=scrapy.field()
3、在pipelines.py中自定義imagepipeline的**# -*- 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`
最後執行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...