用Python做網頁抓取與解析入門筆記

2021-06-12 20:28:04 字數 2542 閱讀 9047

抓取乙個網頁並分析,從而:

多執行緒抓取與分布式抓取。

自動金鑰破解。

有多少種方法可以用的呢?

1.自己寫

urllib2+urlparse+re

最原始的辦法,其中urllib2是python的web庫、urlparse能處理url、re是正則庫,這種方法寫起來比較繁瑣,但也比較「實在」,具體可以參考[4].

urllib2+beautifulsoup

這裡的得力幹將是beautifulsoup[5],beautifulsoup可以非常有效的解析html頁面,就可以免去自己用re去寫繁瑣的正則等。我比較喜歡這種方法,在下面具體講解部分會詳解。

mechanize+beautifulsoup

mechanize是對於urllib2的部分功能的替換,使得除了http以外其他任何連線也都能被開啟,也更加動態可配置,具體參考[6].

pycurl,據說速度非常快,具體方法可以參考[1][2].

2.公開庫

scrapy

這個暫且未嘗試,這種公開的庫的有點應該就是速度快、更強大,好像是可以並行的,所以以後有時間再嘗試下。

其他更多的開源庫參考[3].

假設你已經把python安裝好了(我用的版本是python2.7),現在我們用urllib2+beautifulsoup的方法來抓取 springerlink**上的computational social network analysis和computational social network,也就是上面提到的,這兩本書。

beautifulsoup的安裝,我是在windows下安裝的,官網上沒有window下安裝的教程,我是憑感覺 裝上的。它有乙個setup.py,我就用"python.exe setup.py install"執行了,但提示"error: package directory 'bs4' does not exist",原來是預設python執行路徑不在當前目錄,而是在c盤下面的使用者目錄中,所以把bs4檔案移動過去就好了。跑完好,生成乙個build 資料夾,我知道它肯定要放到python檔案下的lib資料夾裡面去,所以就把下面的bs4移到lib中去,就可以了。以後要用,直接import即可。 如果是linux使用者裝起來應該會更順利些。

req = urllib2.request(url, headers=)

webpage= urllib2.urlopen(req)

webpage.read()...

這裡要注意的一點是headers=,這個最好加上,否則的話,由於內部資訊預設顯示為機器**,可能被伺服器403 forbidden拒絕訪問,在抓取springelink.com上資料的時候不加上一定會被403斃掉的。

用beautifulsoup處理解析網頁,import後,一切從soup = beautifulsoup(webpage.read( ))開始,你可以用python的終端自己玩玩這個產生的soup物件。我這裡就說下一種我比較喜歡的用法,詳細具體的api參考[9].我喜歡用巢狀的 方式來提取內容,什麼意思呢,其實我認為大多數解析定位問題,其實就是下面這樣乙個問題:

假設有乙個頁面如下:

並且你已經用soup = beautifulsoup()初始過了,現在你要根據

->

->

top_div = soup.find('div', ) #注意:返回的是list物件

aa_div = top_div.findall('div', ) #同樣是list物件

links = [div.findall('a') for div in aa_div] #還是list物件

links[0].get('href') ##

links[0].contents #ff

除了鏈結以外,其他內容也是通過類似的方法解析得到。(ps,我發現我若干個小時前自己還沒解決這個問題的時候在so上發的乙個問題已經有人回答了,真好,那時候其實是困在了對list物件直接用find_all出錯)

好吧,最後看看我們的戰利品:

宣告2,由於是用t學校的網來下的,並且沒有複製擴散內容,所以沒有侵權!

最後感嘆下,最近多以看**為主,好久沒學「技術」了,今天用了一些時間搞搞這種敏捷學習,重新體驗那種多執行緒、開n個視窗、各種任務併發的感覺,真舒服,哈哈:-d

[1]

[2]

[3]

[4]

[5]

[6]

[7]

[8]

[9] bs4/doc/

用python做網頁抓取與解析入門筆記 zz

from 抓取乙個網頁並分析,從而 多執行緒抓取與分布式抓取。自動金鑰破解。有多少種方法可以用的呢?1.自己寫 urllib2 urlparse re 最原始的辦法,其中urllib2是python的web庫 urlparse能處理url re是正則庫,這種方法寫起來比較繁瑣,但也比較 實在 具體可...

利用Python抓取和解析網頁 上

對搜尋引擎 檔案索引 文件轉換 資料檢索 站點備份或遷移等應用程式來說,經常用到對網頁 即html檔案 的解析處理。事實上,通過python語言提供的各種模組,我們無需借助web伺服器 或 者web瀏覽器就能夠解析和處理html文件。本文將詳細介紹如何利用python抓取和解析網頁。首先,我們介紹乙...

利用Python抓取和解析網頁 1

利用python抓取和解析網頁 二 對搜尋引擎 檔案索引 文件轉換 資料檢索 站點備份或遷移等應用程式來說,經常用到對網頁 即html檔案 的解析處理。事實上,通過python語言提供的 對搜尋引擎 檔案索引 文件轉換 資料檢索 站點備份或遷移等應用程式來說,經常用到對網頁 即html檔案 的解析處...