摘要:為了使用各種應(yīng)用場(chǎng)景,該項(xiàng)目的整個(gè)網(wǎng)絡(luò)爬蟲(chóng)產(chǎn)品線包含了四類產(chǎn)品,如下圖所示本實(shí)戰(zhàn)是上圖中的獨(dú)立爬蟲(chóng)的一個(gè)實(shí)例,以采集安居客房產(chǎn)經(jīng)紀(jì)人信息為例,記錄整個(gè)采集流程,包括和依賴庫(kù)的安裝,即便是初學(xué)者,也可以跟著文章內(nèi)容成功地完成運(yùn)行。
1, 引言
Python開(kāi)源網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目啟動(dòng)之初,我們就把網(wǎng)絡(luò)爬蟲(chóng)分成兩類:即時(shí)爬蟲(chóng)和收割式網(wǎng)絡(luò)爬蟲(chóng)。為了使用各種應(yīng)用場(chǎng)景,該項(xiàng)目的整個(gè)網(wǎng)絡(luò)爬蟲(chóng)產(chǎn)品線包含了四類產(chǎn)品,如下圖所示:
本實(shí)戰(zhàn)是上圖中的“獨(dú)立python爬蟲(chóng)”的一個(gè)實(shí)例,以采集安居客房產(chǎn)經(jīng)紀(jì)人(http://shenzhen.anjuke.com/tycoon/nanshan/p1/ )信息為例,記錄整個(gè)采集流程,包括python和依賴庫(kù)的安裝,即便是python初學(xué)者,也可以跟著文章內(nèi)容成功地完成運(yùn)行。
運(yùn)行環(huán)境:Windows10
2.1,安裝Python3.5.2
官網(wǎng)下載鏈接: https://www.python.org/ftp/python/3.5.2/python-3.5.2.exe
下載完成后,雙擊安裝。
這個(gè)版本會(huì)自動(dòng)安裝pip和setuptools,方便安裝其它的庫(kù)
2.2,Lxml 3.6.0
Lxml官網(wǎng)地址: http://lxml.de/
Windows版安裝包下載: http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml
對(duì)應(yīng)windows下python3.5的安裝文件為 lxml-3.6.0-cp35-cp35m-win32.whl
下載完成后,在windows下打開(kāi)一個(gè)命令窗口,,切換到剛下載的whl文件的存放目錄,運(yùn)行pip install lxml-3.6.0-cp35-cp35m-win32.whl
2.3,下載網(wǎng)頁(yè)內(nèi)容提取器程序
網(wǎng)頁(yè)內(nèi)容提取器程序是GooSeeker為開(kāi)源Python即時(shí)網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目發(fā)布的一個(gè)類,使用這個(gè)類,可以大大減少信息采集規(guī)則的調(diào)試時(shí)間,具體參看《Python即時(shí)網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目: 內(nèi)容提取器的定義》
下載地址: https://github.com/FullerHua/gooseeker/blob/master/core/gooseeker.py
把gooseeker.py保存在項(xiàng)目目錄下
3,網(wǎng)絡(luò)爬蟲(chóng)的源代碼# _*_coding:utf8_*_ # anjuke.py # 爬取安居客房產(chǎn)經(jīng)紀(jì)人 from urllib import request from lxml import etree from gooseeker import GsExtractor class Spider: def getContent(self, url): conn = request.urlopen(url) output = etree.HTML(conn.read()) return output def saveContent(self, filepath, content): file_obj = open(filepath, "w", encoding="UTF-8") file_obj.write(content) file_obj.close() bbsExtra = GsExtractor() # 下面這句調(diào)用gooseeker的api來(lái)設(shè)置xslt抓取規(guī)則 # 第一個(gè)參數(shù)是app key,請(qǐng)到GooSeeker會(huì)員中心申請(qǐng) # 第二個(gè)參數(shù)是規(guī)則名,是通過(guò)GooSeeker的圖形化工具: 謀數(shù)臺(tái)MS 來(lái)生成的 bbsExtra.setXsltFromAPI("31d24931e043e2d5364d03b8ff9cc77e" , "安居客房產(chǎn)經(jīng)紀(jì)人") url = "http://shenzhen.anjuke.com/tycoon/nanshan/p" totalpages = 50 anjukeSpider = Spider() print("爬取開(kāi)始") for pagenumber in range(1 , totalpages): currenturl = url + str(pagenumber) print("正在爬取", currenturl) content = anjukeSpider.getContent(currenturl) outputxml = bbsExtra.extract(content) outputfile = "result" + str(pagenumber) +".xml" anjukeSpider.saveContent(outputfile , str(outputxml)) print("爬取結(jié)束")
運(yùn)行過(guò)程如下:
將上面的代碼保存到anjuke.py中,和前面2.3步下載的提取器類gooseeker.py放在同一個(gè)文件夾中
打開(kāi)Windows CMD窗口,切換當(dāng)前目錄到存放anjuke.py的路徑(cd xxxxxxx)
運(yùn)行 python anjuke.py
請(qǐng)注意:為了讓源代碼更整潔,也為了讓爬蟲(chóng)程序更有通用性,抓取規(guī)則是通過(guò)api注入到內(nèi)容提取器bbsExtra中的,這樣還有另外一個(gè)好處:如果目標(biāo)網(wǎng)頁(yè)結(jié)構(gòu)變化了,只需通過(guò)MS謀數(shù)臺(tái)重新編輯抓取規(guī)則,而本例的網(wǎng)絡(luò)爬蟲(chóng)代碼不用修改。為內(nèi)容提取器下載采集規(guī)則的方法參看《Python即時(shí)網(wǎng)絡(luò)爬蟲(chóng):API說(shuō)明》。
4,爬蟲(chóng)結(jié)果在項(xiàng)目目錄下可以看到多個(gè)result**.xml文件,文件內(nèi)容如下圖所示:
因?yàn)樾畔⒉杉?guī)則是通過(guò)api下載下來(lái)的,所以,本案例的源代碼顯得十分簡(jiǎn)潔。同時(shí),整個(gè)程序框架變得很通用,因?yàn)樽钣绊懲ㄓ眯缘牟杉?guī)則是從外部注入的。
6,集搜客GooSeeker開(kāi)源代碼下載源GooSeeker開(kāi)源Python網(wǎng)絡(luò)爬蟲(chóng)GitHub源
7,文檔修改歷史2016.07.11:V1.0
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/38060.html
摘要:,引言注釋上一篇爬蟲(chóng)實(shí)戰(zhàn)安居客房產(chǎn)經(jīng)紀(jì)人信息采集,訪問(wèn)的網(wǎng)頁(yè)是靜態(tài)網(wǎng)頁(yè),有朋友模仿那個(gè)實(shí)戰(zhàn)來(lái)采集動(dòng)態(tài)加載豆瓣小組的網(wǎng)頁(yè),結(jié)果不成功。 showImg(https://segmentfault.com/img/bVzdNZ); 1, 引言 注釋:上一篇《Python爬蟲(chóng)實(shí)戰(zhàn)(3):安居客房產(chǎn)經(jīng)紀(jì)人信息采集》,訪問(wèn)的網(wǎng)頁(yè)是靜態(tài)網(wǎng)頁(yè),有朋友模仿那個(gè)實(shí)戰(zhàn)來(lái)采集動(dòng)態(tài)加載豆瓣小組的網(wǎng)頁(yè),結(jié)果不成功...
摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測(cè)形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡(jiǎn)稱是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡(jiǎn)明扼要地說(shuō)明的編碼機(jī)制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開(kāi)始之前,我們先來(lái)看這樣一個(gè)提問(wèn): pyth...
摘要:微型異步爬蟲(chóng)框架基于的異步框架,搭建一個(gè)模塊化的微型異步爬蟲(chóng)??梢詫?duì)該爬蟲(chóng)的布隆過(guò)濾器進(jìn)行配置,安裝中間件等。回調(diào)函數(shù)整個(gè)項(xiàng)目的主要實(shí)現(xiàn)在于回調(diào)函數(shù)的使用,利用異步請(qǐng)求得到響應(yīng)后馬上調(diào)用其請(qǐng)求綁定的回調(diào)函數(shù)來(lái)實(shí)現(xiàn)爬蟲(chóng)的異步爬取。 Amipy Python微型異步爬蟲(chóng)框架(A micro asynchronous Python website crawler framework) 基于...
摘要:通過(guò)本文的學(xué)習(xí),可以快速掌握網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ),結(jié)合實(shí)戰(zhàn)練習(xí),寫出一些簡(jiǎn)單的爬蟲(chóng)項(xiàng)目。從技術(shù)手段來(lái)說(shuō),網(wǎng)絡(luò)爬蟲(chóng)有多種實(shí)現(xiàn)方案,如。二網(wǎng)絡(luò)爬蟲(chóng)技術(shù)基礎(chǔ)在本次課中,將使用技術(shù)手段進(jìn)行項(xiàng)目的編寫。 摘要:本文詳細(xì)講解了python網(wǎng)絡(luò)爬蟲(chóng),并介紹抓包分析等技術(shù),實(shí)戰(zhàn)訓(xùn)練三個(gè)網(wǎng)絡(luò)爬蟲(chóng)案例,并簡(jiǎn)單補(bǔ)充了常見(jiàn)的反爬策略與反爬攻克手段。通過(guò)本文的學(xué)習(xí),可以快速掌握網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ),結(jié)合實(shí)戰(zhàn)練習(xí),寫出一些簡(jiǎn)單的...
閱讀 2757·2021-11-19 09:40
閱讀 5332·2021-09-27 14:10
閱讀 2110·2021-09-04 16:45
閱讀 1489·2021-07-25 21:37
閱讀 3005·2019-08-30 10:57
閱讀 2989·2019-08-28 17:59
閱讀 1062·2019-08-26 13:46
閱讀 1415·2019-08-26 13:27