scrapy 教程

引用
Scrapy 官方教程

一蒂阱,概述

Scrapy 是一個為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架亮蒋,可以使用于包括數(shù)據(jù)挖掘煮寡,信息處理和存儲歷史數(shù)據(jù)等一系列的程序中
最初是為了頁面抓取(網(wǎng)絡(luò)抓戎菏)所設(shè)計的蜡感,也可以應(yīng)用在獲取API所返回的數(shù)據(jù)或者通用的網(wǎng)絡(luò)爬蟲

二,入門指南

教程將完成下列任務(wù):
1沧竟,創(chuàng)建一個Scrapy項目铸敏;
2,定義提取的Item
3悟泵,編寫爬取網(wǎng)站的spider并且提取Item(即數(shù)據(jù))
4杈笔,編寫Item Pipeline來存儲提取到的Item

1,安裝

Ubuntu下糕非,pip install Scrapy


2蒙具,創(chuàng)建項目

在爬取之前球榆,需要創(chuàng)建一個新的Scrapy項目
scrapy startproject tutorial

產(chǎn)生的tutorial目錄如下

文件功能:
scrapy.cfg 項目的配置文件
tutorial項目的python 模塊,之后將在此目錄下添加代碼
tutorial/items.py項目中的item文件
tutorial/pipelines.py項目中的pipelines文件
tutorial/settings項目中的設(shè)置文件
tutorial/spiders放置spider代碼的目錄


3禁筏,定義Item

Item是保存爬取到的數(shù)據(jù)的容器持钉,使用方法和Python字典類似,并且提供了額外的保護機制來避免拼寫錯誤導(dǎo)致的未定義字段錯誤
類似在ORM中做的一樣篱昔,可以通過創(chuàng)建一個scrapy.Item類每强,并且定義類型為scrapy.Field的類
屬性來定義一個Item
首先根據(jù)需要從dmoz.org獲取到的數(shù)據(jù)對item進行建模
需要從dmoz中獲取名字,url州刽,和網(wǎng)站的描述
在item中定義相應(yīng)的字段空执,編輯tutorial目錄中的items.py文件

一開始看起來可能有些復(fù)雜,但是通過定義item, 可以很方便的使用Scrapy的其他方法穗椅,這些方法需要知道item的定義

3辨绊,編寫第一個Spider

Spider是用戶編寫的用于從單個網(wǎng)站或者一些網(wǎng)站爬取數(shù)據(jù)的類
包含了一個用于下載的初始URL,
如何跟進網(wǎng)頁中的鏈接和如何分析頁面中的內(nèi)容匹表,提取生成Item的方法
為了創(chuàng)建一個Spider,必須繼承scrapy.Spider類门坷,并且定義下面的三個屬性:
name用于區(qū)別不同的Spider,該名字必須是唯一的
start_urls包含了Spider在啟動時候進行爬取的url列表,因此袍镀,第一個被獲取到的頁面將是其中之一
后續(xù)的URL則從初始的URL獲取到的數(shù)據(jù)中提取
parse()是spider的一個方法默蚌,被調(diào)用的時候,每個初始URL完成下載后生成的Reponse對象將會作為唯一的參數(shù)傳遞給該函數(shù)流椒,該方法負(fù)責(zé)解析返回的數(shù)據(jù)response data
提取數(shù)據(jù)(生成item)和生成需要進一步處理的URL的Request對象

上面是第一個Spider代碼敏簿,保存在tutorial/spiders目錄下的dmoz_spider.py文件中

3.1 爬取

進入項目tutorial的根目錄明也,執(zhí)行命令啟動spider
scrapy crawl dmoz宣虾, dmoz來自類中的name

crawl dmoz 啟動用于爬取,得到兩個文件Books, Resources

Scrapy 為Spider的start_urls屬性中的每個URL創(chuàng)建了一個scrapy.Request對象温数,并且將
parse方法作為回調(diào)函數(shù)賦值給了Request
Request對象經(jīng)過調(diào)用绣硝,執(zhí)行生成scrapy.http.Response對象并且送回給spider的parse()方法

3.2 提取Item

Selectors 選擇器簡介
從網(wǎng)頁中提取數(shù)據(jù)有很多的方法,Scrapy 使用了一種基于Xpath和Css表達式機制-Scrapy Selectors
Xpath基本例子:
/html/head/title選擇Html文檔中的head標(biāo)簽內(nèi)的title元素
/html/head/title/text()選擇上面元素中的文字
//td選擇所有的td元素
//div[@class="mini"]選擇所有具有class="mine"屬性的div元素
為了配合使用Xpath,Scrapy 提供了Selector之外撑刺,還提供了方法避免每次從response中提取數(shù)據(jù)時生成selector的麻煩

Selector有四個基本的方法
xpath()鹉胖,傳入xpath表達式,返回該表達式所對應(yīng)的所有節(jié)點的selector list列表
css()够傍, 出入css表達式,返回該表達式所對應(yīng)的所有節(jié)點的selector list
extract()甫菠,序列化該節(jié)點為unicode字符串并且返回list
re(),根據(jù)傳入的正則表達式對數(shù)據(jù)進行提取冕屯,返回unicode字符串列表

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寂诱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子安聘,更是在濱河造成了極大的恐慌痰洒,老刑警劉巖瓢棒,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丘喻,居然都是意外死亡脯宿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門泉粉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來连霉,“玉大人,你說我怎么就攤上這事嗡靡【矫妫” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵叽躯,是天一觀的道長财边。 經(jīng)常有香客問我,道長点骑,這世上最難降的妖魔是什么酣难? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮黑滴,結(jié)果婚禮上憨募,老公的妹妹穿的比我還像新娘。我一直安慰自己袁辈,他們只是感情好菜谣,可當(dāng)我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著晚缩,像睡著了一般尾膊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上荞彼,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天冈敛,我揣著相機與錄音,去河邊找鬼鸣皂。 笑死抓谴,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的寞缝。 我是一名探鬼主播癌压,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼荆陆!你這毒婦竟也來了滩届?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤慎宾,失蹤者是張志新(化名)和其女友劉穎丐吓,沒想到半個月后浅悉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡券犁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年术健,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粘衬。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡荞估,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稚新,到底是詐尸還是另有隱情勘伺,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布褂删,位于F島的核電站飞醉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏屯阀。R本人自食惡果不足惜缅帘,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望难衰。 院中可真熱鬧钦无,春花似錦、人聲如沸盖袭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鳄虱。三九已至弟塞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間醇蝴,已是汗流浹背宣肚。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工想罕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留悠栓,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓按价,卻偏偏與公主長得像惭适,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子楼镐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 假設(shè)你已經(jīng)裝好了Scrapy癞志,如果沒有請查看安裝指南.。 將要抓取 quotes.toscrape.com網(wǎng)站框产。 ...
    ximengchj閱讀 4,821評論 0 5
  • Scrapy 教程 本文翻譯自scrapy的最新官方教程凄杯,覺得有幫助的朋友可以小小打賞一下错洁,謝謝。 首先戒突,用戶需要...
    fromradio閱讀 1,514評論 2 14
  • scrapy學(xué)習(xí)筆記(有示例版) 我的博客 scrapy學(xué)習(xí)筆記1.使用scrapy1.1創(chuàng)建工程1.2創(chuàng)建爬蟲模...
    陳思煜閱讀 12,655評論 4 46
  • 此環(huán)節(jié)是在MAC OS中進行搭建 安裝scrapy pip install scrapy即可快速完成安裝 創(chuàng)建項目...
    abeb6ca9bb86閱讀 606評論 0 2
  • scrapy是python最有名的爬蟲框架之一膊存,可以很方便的進行web抓取导而,并且提供了很強的定制型,這里記錄簡單學(xué)...
    bomo閱讀 2,088評論 1 11