(六)Scrapy框架(一) 衡创?python+scrapy爬蟲5小時入門

Scrapy框架(一)

框架簡介

Scrapy是純Python開發(fā)的一個高效,結構化的網(wǎng)頁抓取框架;

Scrapy是用純Python實現(xiàn)一個為了爬取網(wǎng)站數(shù)據(jù)、提取結構性數(shù)據(jù)而編寫的應用框架,用途非常廣泛职车。多用于抓取大量靜態(tài)頁面。

框架的力量鹊杖,用戶只需要定制開發(fā)幾個模塊就可以輕松的實現(xiàn)一個爬蟲悴灵,用來抓取網(wǎng)頁內容以及各種圖片,非常之方便骂蓖。

Scrapy 使用了 Twisted['tw?st?d] (其主要對手是Tornado)異步網(wǎng)絡框架來處理網(wǎng)絡通訊积瞒,可以加快我們的下載速度,不用自己去實現(xiàn)異步框架登下,并且包含了各種中間件接口茫孔,可以靈活的完成各種需求。

模塊安裝

scrapy支持Python2.7和python3.4以上版本被芳。

python包可以用全局安裝(也稱為系統(tǒng)范圍)缰贝,也可以安裝咋用戶空間中。不建議安裝在系統(tǒng)范圍畔濒。相反剩晴,建議在"虛擬環(huán)境"(virtualenv)中安裝scrapy。Virtualenv允許不與已安裝的Python系統(tǒng)包沖突侵状,并且仍然通常使用pip安裝赞弥。

Ubuntu 14.04或以上 安裝
scrapy目前正在使用最新版的lxml,twisted和pyOpenSSL進行測試壹将,并且與最近的Ubuntu發(fā)行版兼容嗤攻。但它也支持舊版本的Ubuntu,比如Ubuntu14.04诽俯,盡管可能存在TLS連接問題妇菱。

Ubuntu安裝注意事項
不要使用 python-scrapyUbuntu提供的軟件包,它們通常太舊而且速度慢暴区,無法趕上最新的Scrapy闯团。

要在Ubuntu(或基于Ubuntu)系統(tǒng)上安裝scrapy,您需要安裝這些依賴項:

sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev

如果你想在python3上安裝scrapy仙粱,你還需要Python3的開發(fā)頭文件:

sudo apt-get install python3-dev

在virtualenv中房交,你可以使用pip安裝Scrapy:

pip install scrapy

簡單使用

第零步:分析網(wǎng)站

首先得想
1. 你的目標是什么??2. 你的目標是動態(tài)數(shù)據(jù)or靜態(tài)數(shù)據(jù)??3. 怎么獲取第一批數(shù)據(jù)?
4. 怎么獲取多批數(shù)據(jù)?
5. 怎么做持久化?

第一步: 新建項目

創(chuàng)建項目: scrapy startproject project_name
進入項目目錄后創(chuàng)建爬蟲:
scrapy genspider spider_name website_domain
執(zhí)行爬蟲:
scrapy crawl spider_name 或者 scrapy runspider spider_file
--------------------------------------------------------------------
scrapy.cfg: 項目部署的配置文件
tz_spider: 項目目錄, 包含了項目運行相關的文件
itsms.py: 項目的目標文件
middlewares.py: 項目的中間件文件
pipelines.py: 項目的管道文件
settings.py: 項目的設置文件
spiders: 項目的爬蟲目錄

第二步: 設置項目目標

進入items.py文件中設置爬取的目標
1560429387912.png

第三步: 設置管道文件

編輯pipelines.py文件, 讓目標數(shù)據(jù)流向到指定點. 如: 數(shù)據(jù)保存到文件中
1560429449558.png
注意: 管道文件設置好后, 需要在settings.py文件注冊記得注冊
# Configure item pipelines
# See https://doc.scrapy.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {
   'papaixin.pipelines.PapaixinPipeline': 300,
}

第四步: 修改設置文件

設置UA信息
# User_Agent信息設置
# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/75.0.3770.80 Safari/537.36'
             
設置不遵循robots檢測
# Obey robots.txt rules
# ROBOTSTXT_OBEY = True

設置爬取時間間隔
# See also autothrottle settings and docs
DOWNLOAD_DELAY = 0.5

設置管道文件注冊
# Configure item pipelines
# See https://doc.scrapy.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {
   'papaixin.pipelines.PapaixinPipeline': 300,
}

第五步: 編寫spider

1560429800980.png

第六步: 報錯了怎么辦

先排語法錯誤
再排拼寫錯誤
繼排邏輯錯誤
后排數(shù)據(jù)錯誤

運行流程

Scrapy構架解析:

Scrapy Engine(引擎): 負責Spider、ItemPipeline伐割、Downloader候味、Scheduler中間的通訊刃唤,信號、數(shù)據(jù)傳遞等白群。

Scheduler(調度器): 它負責接受引擎發(fā)送過來的Request請求尚胞,并按照一定的方式進行整理排列,入隊帜慢,當引擎需要時笼裳,交還給引擎。

Downloader(下載器):負責下載Scrapy Engine(引擎)發(fā)送的所有Requests請求粱玲,并將其獲取到的Responses交還給Scrapy Engine(引擎)躬柬,由引擎交給Spider來處理,

Spider(爬蟲):它負責處理所有Responses,從中分析提取數(shù)據(jù)抽减,獲取Item字段需要的數(shù)據(jù)允青,并將需要跟進的URL提交給引擎,再次進入Scheduler(調度器)胯甩,

Item Pipeline(管道):它負責處理Spider中獲取到的Item昧廷,并進行進行后期處理(詳細分析、過濾偎箫、存儲等)的地方.

Downloader Middlewares:(下載中間件):你可以當作是一個可以自定義擴展下載功能的組件木柬。

Spider Middlewares(Spider中間件):你可以理解為是一個可以自定擴展和操作引擎和Spider中間通信的功能組件(比如進入Spider的Responses;和從Spider出去的Requests)
1560429875677.png

作業(yè)

1.實踐豆瓣電影案例, 保存數(shù)據(jù)到json文件中.
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市淹办,隨后出現(xiàn)的幾起案子眉枕,更是在濱河造成了極大的恐慌,老刑警劉巖怜森,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件速挑,死亡現(xiàn)場離奇詭異,居然都是意外死亡副硅,警方通過查閱死者的電腦和手機姥宝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恐疲,“玉大人腊满,你說我怎么就攤上這事∨嗉海” “怎么了碳蛋?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長省咨。 經(jīng)常有香客問我肃弟,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任笤受,我火速辦了婚禮穷缤,結果婚禮上,老公的妹妹穿的比我還像新娘箩兽。我一直安慰自己绅项,他們只是感情好,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布比肄。 她就那樣靜靜地躺著,像睡著了一般囊陡。 火紅的嫁衣襯著肌膚如雪芳绩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天撞反,我揣著相機與錄音妥色,去河邊找鬼。 笑死遏片,一個胖子當著我的面吹牛嘹害,可吹牛的內容都是我干的。 我是一名探鬼主播吮便,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼笔呀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了髓需?” 一聲冷哼從身側響起许师,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎僚匆,沒想到半個月后微渠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡咧擂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年逞盆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片松申。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡云芦,死狀恐怖,靈堂內的尸體忽然破棺而出攻臀,到底是詐尸還是另有隱情焕数,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布刨啸,位于F島的核電站堡赔,受9級特大地震影響,放射性物質發(fā)生泄漏设联。R本人自食惡果不足惜善已,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一灼捂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧换团,春花似錦悉稠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至想虎,卻和暖如春卦尊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背舌厨。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工岂却, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人裙椭。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓躏哩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親揉燃。 傳聞我的和親對象是個殘疾皇子扫尺,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內容