一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Scrapy安裝、爬蟲入門教程、爬蟲實(shí)例(豆瓣電影爬蟲)

 昵稱16883405 2016-07-17

Scrapy在window上的安裝教程見(jiàn)下面的鏈接:Scrapy安裝教程

上述安裝教程已實(shí)踐,可行。(本來(lái)打算在ubuntu上安裝Scrapy的,但是Ubuntu 磁盤空間太少了,還沒(méi)擴(kuò)展磁盤空間,所以沒(méi)有在Ubuntu上裝,至于如何在Ubuntu上安裝Scrapy,網(wǎng)上有挺多教程的)

Scrapy的入門教程見(jiàn)下面鏈接:Scrapy入門教程

上面的入門教程是很基礎(chǔ)的,先跟著作者走一遍,要?jiǎng)悠饋?lái)喲,不要只是閱讀上面的那篇入門教程。

下面我簡(jiǎn)單總結(jié)一下Scrapy爬蟲過(guò)程:

1、在Item中定義自己要抓取的數(shù)據(jù)

movie_name就像是字典中的“鍵”,爬到的數(shù)據(jù)就像似字典中的“值”。在繼承了BaseSpider的類中會(huì)用到:

第一行就是上面那個(gè)圖中的TutorialItem這個(gè)類,紅框圈出來(lái)的就是上圖中的movie_name這個(gè)變量

2、然后在spiders目錄下編輯Spider.py那個(gè)文件

按上面【入門教程】來(lái)寫就行了,我這邊給個(gè)例子,跟我上面的item是匹配的:

【入門教程】你沒(méi)有給出start_requests這個(gè)方法,稍后我會(huì)講到這個(gè)方法。另外這里的代碼我都是截圖,后面我會(huì)用代碼面板顯示我的代碼,有需要的人可以復(fù)制下來(lái)玩玩。

3、編輯pipelines.py文件,可以通過(guò)它將保存在TutorialItem中的內(nèi)容寫入到數(shù)據(jù)庫(kù)或者文件中

下面的代碼示例是寫到文件(如果要寫到數(shù)據(jù)庫(kù)中去,這里有個(gè)示例代碼)中去:

對(duì)json模塊的方法的注釋:dump和dumps(從Python生成JSON),load和loads(解析JSON成Python的數(shù)據(jù)類型);dump和dumps的唯一區(qū)別是dump會(huì)生成一個(gè)類文件對(duì)象,dumps會(huì)生成字符串,同理load和loads分別解析類文件對(duì)象和字符串格式的JSON。(注釋來(lái)于http://www.jb51.net/article/52224.htm )

4、爬蟲開始

上述三個(gè)過(guò)程后就可以爬蟲了,僅需上述三個(gè)過(guò)程喲,然后在dos中將目錄切換到tutorial下輸入scrapy crawl douban就可以爬啦:

上面幾個(gè)過(guò)程只是先理清楚用Scrapy爬蟲的思路,下面的重點(diǎn)戲是第二個(gè)過(guò)程,我會(huì)對(duì)這個(gè)過(guò)程進(jìn)行較詳細(xì)的解釋,并提供代碼。

douban_spider.py這個(gè)文件的代碼如下:

douban_spider.py

代碼有了,我來(lái)一步步講解哈。

前言:我要爬的是豆瓣的數(shù)據(jù),我有了很多電影的名字,但是我需要電影的詳情,我用了一下豆瓣電影的網(wǎng)站,發(fā)現(xiàn)當(dāng)我在搜索框里輸入“Last Days in Vietnam”時(shí)url會(huì)變成http://movie.douban.com/subject_search?search_text=Last+Days+in+Vietnam&cat=1002 然后我就試著直接輸入http://movie.douban.com/subject_search?search_text=Last+Days+in+Vietnam這個(gè)url,搜索結(jié)果是一樣的,很顯然這就是get方式,這樣我們就找到了規(guī)律:http://movie.douban.com/subject_search?search_text=后面加上我們的電影名字并用加號(hào)分割就行了。

我們的電影名字(大量的電影名字)是存在movie_name.txt這個(gè)文件中里面的(一行一個(gè)電影名字):

我們可以先用python腳本(shell腳本也行)將電影名之間的空格處理為+,也可以在爬蟲中讀取電影名后進(jìn)行一次replace處理(我是先處理成+的)。爬蟲讀取電影名字文件,然后構(gòu)建url,然后就根據(jù)得到的網(wǎng)頁(yè)找到搜索到的第一個(gè)電影的url(其實(shí)第一個(gè)電影未必一定是我們要的,但是這種情況是少數(shù),我們暫時(shí)不理會(huì)它),得到第一個(gè)電影的url后,再繼續(xù)爬,這次爬到的頁(yè)面就含有我們想要的電影信息,需要使用XPath來(lái)獲得html文件中元素節(jié)點(diǎn),最后將獲得的信息存到TutorialItem中,通過(guò)pipelines寫入到data.dat文件中。

XPath的教程在這里:w3school的基礎(chǔ)教程scrapy官網(wǎng)上的Xpath 這些東西【入門教程】中都有說(shuō)。

1、start_requests方法:

在【入門教程】那篇文章中沒(méi)有用到這個(gè)方法,而是直接在start_urls中存入我們要爬蟲的網(wǎng)頁(yè)鏈接,但是如果我們要爬蟲的鏈接很多,而且是有一定規(guī)律的,我們就需要重寫這個(gè)方法了,首先我們看看start_requests這個(gè)方法是干嘛的:

可見(jiàn)它就是從start_urls中讀取鏈接,然后使用make_requests_from_url生成Request,

start_requests官方解釋在這里

那么這就意味我們可以在start_requests方法中根據(jù)我們自己的需求往start_urls中寫入我們自定義的規(guī)律的鏈接:

2、parse方法:

 生成了請(qǐng)求后,scrapy會(huì)幫我們處理Request請(qǐng)求,然后獲得請(qǐng)求的url的網(wǎng)站的響應(yīng)response,parse就可以用來(lái)處理response的內(nèi)容。在我們繼承的類中重寫parse方法:

parse_item是我們自定義的方法,用來(lái)處理新連接的request后獲得的response:

遞歸爬蟲的方法這里這里有。

HtmlXPathSelector的解釋在這里

為了獲得我想要的數(shù)據(jù)我也是蠻拼的,由于豆瓣電影詳情的節(jié)點(diǎn)是沒(méi)太大規(guī)律了,我后面還用了正則表達(dá)式去獲取我要的內(nèi)容,具體看上面的代碼中parse_item這個(gè)方法吧:

好了,結(jié)束了,這里還有一篇Scrapy的提高篇,有興趣的去看看吧。

寫寫博客是為了記錄一下自己實(shí)踐的過(guò)程,也希望能對(duì)需要者有用吧!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    欧美日不卡无在线一区| 一区中文字幕人妻少妇| 日本午夜免费福利视频| 国产成人午夜av一区二区| 精产国品一二三区麻豆| 亚洲人妻av中文字幕| 亚洲国产av在线视频| 国产不卡最新在线视频| 免费在线观看激情小视频| 亚洲最新中文字幕在线视频| 精品欧美日韩一二三区| 国产亚洲欧美另类久久久 | 亚洲精品国产精品日韩| 亚洲第一区欧美日韩在线| 国产精品久久女同磨豆腐| 欧美午夜色视频国产精品| 欧美激情视频一区二区三区| 五月天婷亚洲天婷综合网| 一区二区不卡免费观看免费| 亚洲熟妇中文字幕五十路| 国产成人精品午夜福利| 爱在午夜降临前在线观看| 日本理论片午夜在线观看| 内射精品欧美一区二区三区久久久| 欧美区一区二区在线观看| 日本加勒比不卡二三四区| 日韩特级黄片免费在线观看| 久久精品亚洲精品一区| 日本特黄特色大片免费观看| 免费观看日韩一级黄色大片| 久久99精品日韩人妻| 国产真人无遮挡免费视频一区| 夜夜嗨激情五月天精品| 欧洲一区二区三区自拍天堂| 日本不卡一本二本三区| 亚洲天堂有码中文字幕视频| 国产av一区二区三区四区五区| 国产欧美性成人精品午夜| 亚洲一区二区欧美激情| 亚洲欧美日韩网友自拍| 亚洲欧美日韩综合在线成成|