摘要:當(dāng)在中被收集之后,它將會被傳遞到,這些組件按定義的順序處理。每個(gè)都是實(shí)現(xiàn)了簡單方法的類,比如決定此是丟棄而存儲。對象被開啟的可選實(shí)現(xiàn),當(dāng)被開啟時(shí),這個(gè)方法被調(diào)用。
Item Pipeline
當(dāng)Item在Spider中被收集之后,它將會被傳遞到Item Pipeline,這些Item Pipeline組件按定義的順序處理Item。
每個(gè)Item Pipeline都是實(shí)現(xiàn)了簡單方法的Python類,比如決定此Item是丟棄而存儲。以下是item pipeline的一些典型應(yīng)用:
驗(yàn)證爬取的數(shù)據(jù)(檢查item包含某些字段,比如說name字段)
查重(并丟棄)
將爬取結(jié)果保存到文件或者數(shù)據(jù)庫中
編寫item pipeline編寫item pipeline很簡單,item pipiline組件是一個(gè)獨(dú)立的Python類,其中process_item()方法必須實(shí)現(xiàn):
import something class SomethingPipeline(object): def __init__(self): # 可選實(shí)現(xiàn),做參數(shù)初始化等 # doing something def process_item(self, item, spider): # item (Item 對象) – 被爬取的item # spider (Spider 對象) – 爬取該item的spider # 這個(gè)方法必須實(shí)現(xiàn),每個(gè)item pipeline組件都需要調(diào)用該方法, # 這個(gè)方法必須返回一個(gè) Item 對象,被丟棄的item將不會被之后的pipeline組件所處理。 return item def open_spider(self, spider): # spider (Spider 對象) – 被開啟的spider # 可選實(shí)現(xiàn),當(dāng)spider被開啟時(shí),這個(gè)方法被調(diào)用。 def close_spider(self, spider): # spider (Spider 對象) – 被關(guān)閉的spider # 可選實(shí)現(xiàn),當(dāng)spider被關(guān)閉時(shí),這個(gè)方法被調(diào)用啟用一個(gè)Item Pipeline組件
為了啟用Item Pipeline組件,必須將它的類添加到 settings.py文件ITEM_PIPELINES 配置,就像下面這個(gè)例子:
# Configure item pipelines # See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html ITEM_PIPELINES = { #"mySpider.pipelines.SomePipeline": 300, "mySpider.pipelines.ItcastJsonPipeline":300 }
分配給每個(gè)類的整型值,確定了他們運(yùn)行的順序,item按數(shù)字從低到高的順序,通過pipeline,通常將這些數(shù)字定義在0-1000范圍內(nèi)(0-1000隨意設(shè)置,數(shù)值越低,組件的優(yōu)先級越高)
重新啟動(dòng)爬蟲將parse()方法改為入門簡介中最后思考中的代碼,然后執(zhí)行下面的命令:
scrapy crawl itcast
查看當(dāng)前目錄是否生成teacher.json
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/41381.html
摘要:最近真是忙的吐血。。。上篇寫的是直接在爬蟲中使用,這樣不是很好,下使用才是正經(jīng)方法。 最近真是忙的吐血。。。 上篇寫的是直接在爬蟲中使用mongodb,這樣不是很好,scrapy下使用item才是正經(jīng)方法。在item中定義需要保存的內(nèi)容,然后在pipeline處理item,爬蟲流程就成了這樣: 抓取 --> 按item規(guī)則收集需要數(shù)據(jù) -->使用pipeline處理(存儲等) 定義it...
摘要:前言新接觸爬蟲,經(jīng)過一段時(shí)間的實(shí)踐,寫了幾個(gè)簡單爬蟲,爬取豆瓣電影的爬蟲例子網(wǎng)上有很多,但都很簡單,大部分只介紹了請求頁面和解析部分,對于新手而言,我希望能夠有一個(gè)比較全面的實(shí)例。 0.前言 新接觸爬蟲,經(jīng)過一段時(shí)間的實(shí)踐,寫了幾個(gè)簡單爬蟲,爬取豆瓣電影的爬蟲例子網(wǎng)上有很多,但都很簡單,大部分只介紹了請求頁面和解析部分,對于新手而言,我希望能夠有一個(gè)比較全面的實(shí)例。所以找了很多實(shí)例和文...
摘要:組件引擎負(fù)責(zé)控制數(shù)據(jù)流在系統(tǒng)中所有組件中流動(dòng),并在相應(yīng)動(dòng)作發(fā)生時(shí)觸發(fā)事件。下載器下載器負(fù)責(zé)獲取頁面數(shù)據(jù)并提供給引擎,而后提供給。下載器中間件下載器中間件是在引擎及下載器之間的特定鉤子,處理傳遞給引擎的。 Scrapy 是用Python實(shí)現(xiàn)一個(gè)為爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架。 一、Scrapy框架簡介 Scrapy是一個(gè)為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架。 ...
摘要:內(nèi)容如下是我們準(zhǔn)備爬的初始頁這個(gè)是解析函數(shù),如果不特別指明的話,抓回來的頁面會由這個(gè)函數(shù)進(jìn)行解析。爬取多個(gè)頁面的原理相同,注意解析翻頁的地址設(shè)定終止條件指定好對應(yīng)的頁面解析函數(shù)即可。后面的數(shù)字表示的是優(yōu)先級。指明每兩個(gè)請求之間的間隔。 序 本文主要內(nèi)容:以最短的時(shí)間寫一個(gè)最簡單的爬蟲,可以抓取論壇的帖子標(biāo)題和帖子內(nèi)容。 本文受眾:沒寫過爬蟲的萌新。 入門 0.準(zhǔn)備工作 需要準(zhǔn)備的東西:...
閱讀 3808·2021-11-12 10:34
閱讀 2823·2021-09-22 15:14
閱讀 790·2019-08-30 15:53
閱讀 3207·2019-08-30 12:53
閱讀 1293·2019-08-29 18:32
閱讀 2772·2019-08-29 16:41
閱讀 1070·2019-08-26 13:40
閱讀 1813·2019-08-23 18:07