對於scrapy框架的一些補充

Item Pipeline


當 Item 在 Spider 中被收集之後,它將會被傳遞到 Item Pipeline,這些 Item Pipeline 組件按定義的順序處理 Item。每個 Item Pipeline 都是實現了簡單方法的 Python 類,比如決定此 Item 是丟棄而存儲。以下是 item pipeline 的一些典型應用:
驗證爬取的數據(檢查 item 包含某些字段,比如說 name 字段)
查重(並丟棄)
將爬取結果保存到文件或者數據庫中
編寫 item pipeline
編寫 item pipeline 很簡單,item pipiline 組件是一個獨立的 Python 類,其中 process_item()方法必須實現:

啓用pipelines

爲了啓用Item Pipeline組件,必須將它的類添加到 settings.py文件ITEM_PIPELINES 配置,就像下面這個例子:

分配給每個類的整型值,確定了他們運行的順序,item 按數字從低到高的順序,通過pipeline,通常將這些數字定義在 0-1000 範圍內(0-1000 隨意設置,數值越低,組件的優先級越高)

 

spider

Spider 類定義瞭如何爬取某個(或某些)網站。包括了爬取的動作(例如:是否跟進鏈接)以及如何從網頁的內容中提取結構化數據(爬取 item)。 換句話說,Spider 就是您定義爬取的動作及分析某個網頁(或者是有些網頁)的地方。class scrapy.Spider 是最基本的類,所有編寫的爬蟲必須繼承這個類

主要用到的函數及調用順序爲:
__init__() : 初始化爬蟲名字和 start_urls 列表
start_requests() 調用 make_requests_from url():生成 Requests 對象交給 Scrapy下載並返回
response
parse() : 解析 response,並返回 Item 或 Request(s 需指定回調函數)。Item 傳給 Item pipline
持久化 , 而 Requests 交由 Scrapy 下載,並由指定的回調函數處理(默認 parse()),一直進
行循環,直到處理完所有的數據爲止。

主要屬性和方法

name定義 spider 名字的字符串。

例如,如果 spider 爬取 mywebsite.com ,該 spider 通常會被命名爲 mywebsit

allowed_domains包含了 spider 允許爬取的域名(domain)的列表,可選。

start_urls初始 URL 元祖/列表。當沒有制定特定的 URL 時,spider 將從該列表中開始進行爬取。

start_requests(self)

該方法必須返回一個可迭代對象(iterable)。該對象包含了 spider 用於爬取(默認實現是使用 start_urls 的 url)的第一個 Request。

當 spider 啓動爬取並且未指定 start_urls 時,該方法被調用。

parse(self, response)當請求 url 返回網頁沒有指定回調函數時,默認的 Request 對象回調函數。用來處理網頁返回的 response,以及生成 Item 或者 Request 對象。

log(self, message[, level, component])

使用 scrapy.log.msg() 方法記錄(log)message

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章