python爬蟲——scrapy框架總結(jié)

Scrapy是用python寫的一個爬蟲框架,當然如果只是寫一些簡單爬蟲豺裆,python自己就有做爬蟲的庫知给,scrapy只是更加流水線化,各部分分工更加清晰.它的結(jié)構(gòu)如下圖:

scrapy框架流程圖

① Scrapy Engine

引擎負責控制數(shù)據(jù)流在系統(tǒng)中所有組件中流動嘿架,并在相應動作發(fā)生時觸發(fā)事件。 詳細內(nèi)容查看下面的數(shù)據(jù)流(Data Flow)部分

② 調(diào)度器(Scheduler)

調(diào)度器從引擎接受request并將他們?nèi)腙犘ン铮员阒笠嬲埱笏麄儠r提供給引擎

③ 下載器(Downloader)

下載器負責獲取頁面數(shù)據(jù)并提供給引擎耸彪,而后提供給spider

④ Spiders

Spider是Scrapy用戶編寫用于分析response并提取item(即獲取到的item)或額外跟進的URL的類。 每 個spider負責處理一個特定(或一些)網(wǎng)站

⑤ Item Pipeline

Item Pipeline負責處理被spider提取出來的item忘苛。典型的處理有清理蝉娜、 驗證及持久化(例如存取到數(shù) 據(jù)庫中)

⑥ 下載器中間件(Downloader middlewares)

下載器中間件是在引擎及下載器之間的特定鉤子(specific hook),處理Downloader傳遞給引擎的 response扎唾。 其提供了一個簡便的機制召川,通過插入自定義代碼來擴展Scrapy功能

⑦ Spider中間件(Spider middlewares)

Spider中間件是在引擎及Spider之間的特定鉤子(specific hook),處理spider的輸入(response)和輸出 (items及requests)胸遇。 其提供了一個簡便的機制荧呐,通過插入自定義代碼來擴展Scrapy功能

流程歸納:

1.首先下載器下載request回執(zhí)的html等的response
2.然后下載器傳給爬蟲解析
3.接著爬蟲解析后交給調(diào)度器過濾,查重等等
4.最后交給管道,進行爬取數(shù)據(jù)的處理

實戰(zhàn)應用
1.創(chuàng)建爬蟲項目
1??scrapy startproject 項目名稱
2??cd進入 文件夾(與項目名稱同名) cd到spider文件夾
3??scrapy genspider 爬蟲名稱 域
通用爬蟲:scrapy genspider -t crawl 爬蟲名稱 域
2.編寫items.py
在這里定義字段
字段名 = scrapy.Field()
3.編寫spider(爬蟲文件)
先爬后忍吃觥(獲取整個網(wǎng)頁內(nèi)容获雕,再取出有用部分)

name:爬蟲的識別名,它必須是唯一的收捣,在不同的爬蟲中你必須定義不同的名字.
start_urls:包含了Spider在啟動時進行爬取的url列表届案。因此,第一個被獲取到的頁面將是其中之一罢艾。后續(xù)的URL則從初始的URL獲取到的數(shù)據(jù)中提取楣颠。我們可以利用正則表達式定義和過濾需要進行跟進的鏈接。
parse():是spider的一個方法咐蚯。被調(diào)用時童漩,每個初始URL完成下載后生成的 Response 對象將會作為唯一的參數(shù)傳遞給該函數(shù)。該方法負責解析返回的數(shù)據(jù)(response data)春锋,提取數(shù)據(jù)(生成item)以及生成需要進一步處理的URL的 Request 對象矫膨。
這個方法負責解析返回的數(shù)據(jù)、匹配抓取的數(shù)據(jù)(解析為 item )并跟蹤更多的 URL期奔。

4.存儲內(nèi)容---管道(Pipline)

數(shù)據(jù)持久化 :(切記激活管道)
1.可以自定義數(shù)據(jù)管道
def init(self,xxx,xxx,xxx):
可以設(shè)置一些參數(shù)侧馅,(比如,創(chuàng)建數(shù)據(jù)庫連接呐萌,打開文件等等)
@classmethod
def from_crawler(cls,crawler):
crawler:包含了爬蟲的一些核心組件馁痴,
可以獲取settings中的一些參數(shù)
return cls(xxx,xxx,xxx)

    def open_spider(self,spider):
        可選方法,在爬蟲開始的時候會調(diào)用
   
    def process_item(self,item,spider):
        所有的item,都會經(jīng)過這個方法
        在這里做數(shù)據(jù)持久化(pymongo,mysql)
        方法1
        if isinstance(item,類名):
            做數(shù)據(jù)插入操作
        elif isinstance(item,類名):
            做數(shù)據(jù)插入操作
        方法2
            1.在item對應的類中肺孤,我們定義一個方法罗晕,返回sql語句和要插入的數(shù)據(jù)
            2.使用item調(diào)用這個方法,得到sql語句和要插入的管道
            3.執(zhí)行插入操作
        
        return item≡隆(如果將item,傳遞給下一個管道小渊,必須要return)
     def close_spider(self,spider):
        可選方法,在爬蟲結(jié)束的時候會調(diào)用
        在這里關(guān)閉數(shù)據(jù)庫連接顾腊,關(guān)閉文件等
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末粤铭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子杂靶,更是在濱河造成了極大的恐慌,老刑警劉巖酱鸭,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吗垮,死亡現(xiàn)場離奇詭異,居然都是意外死亡凹髓,警方通過查閱死者的電腦和手機烁登,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饵沧,你說我怎么就攤上這事锨络。” “怎么了狼牺?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵羡儿,是天一觀的道長。 經(jīng)常有香客問我是钥,道長掠归,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任悄泥,我火速辦了婚禮虏冻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘弹囚。我一直安慰自己厨相,他們只是感情好,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布鸥鹉。 她就那樣靜靜地躺著蛮穿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宋舷。 梳的紋絲不亂的頭發(fā)上绪撵,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音祝蝠,去河邊找鬼音诈。 笑死,一個胖子當著我的面吹牛绎狭,可吹牛的內(nèi)容都是我干的细溅。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼儡嘶,長吁一口氣:“原來是場噩夢啊……” “哼喇聊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蹦狂,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤誓篱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后凯楔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窜骄,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年摆屯,在試婚紗的時候發(fā)現(xiàn)自己被綠了邻遏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖准验,靈堂內(nèi)的尸體忽然破棺而出赎线,到底是詐尸還是另有隱情,我是刑警寧澤糊饱,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布垂寥,位于F島的核電站,受9級特大地震影響济似,放射性物質(zhì)發(fā)生泄漏矫废。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一砰蠢、第九天 我趴在偏房一處隱蔽的房頂上張望蓖扑。 院中可真熱鬧,春花似錦台舱、人聲如沸律杠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽柜去。三九已至,卻和暖如春拆宛,著一層夾襖步出監(jiān)牢的瞬間嗓奢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工浑厚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留股耽,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓钳幅,卻偏偏與公主長得像物蝙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子敢艰,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345