天天看點

Python爬蟲基礎前言 爬蟲架構 URL管理器 網頁下載下傳器(urllib) 網頁解析器(BeautifulSoup) 後記

1、抓取網頁本身的接口

此外,抓取網頁有時候需要模拟浏覽器的行為,很多網站對于生硬的爬蟲抓取都是封殺的。這是我們需要模拟user agent的行為構造合适的請求,譬如模拟使用者登陸、模拟session/cookie的存儲和設定。在python裡都有非常優秀的第三方包幫你搞定,如requests,mechanize

2、網頁抓取後的處理

抓取的網頁通常需要處理,比如過濾html标簽,提取文本等。python的beautifulsoap提供了簡潔的文檔處理功能,能用極短的代碼完成大部分文檔的處理。

其實以上功能很多語言和工具都能做,但是用python能夠幹得最快,最幹淨。如果你想學習python可以來這個群,首先是四七二,中間是三零九,最後是二六一,裡面有大量的學習資料可以下載下傳。

life is short, you need python.

ps:python2.x和python3.x有很大不同,本文隻讨論python3.x的爬蟲實作方法。

Python爬蟲基礎前言 爬蟲架構 URL管理器 網頁下載下傳器(urllib) 網頁解析器(BeautifulSoup) 後記

url管理器:管理待爬取的url集合和已爬取的url集合,傳送待爬取的url給網頁下載下傳器。

網頁下載下傳器(urllib):爬取url對應的網頁,存儲成字元串,傳送給網頁解析器。

網頁解析器(beautifulsoup):解析出有價值的資料,存儲下來,同時補充url到url管理器。

Python爬蟲基礎前言 爬蟲架構 URL管理器 網頁下載下傳器(urllib) 網頁解析器(BeautifulSoup) 後記

添加新的url到待爬取url集合中。

判斷待添加的url是否在容器中(包括待爬取url集合和已爬取url集合)。

擷取待爬取的url。

判斷是否有待爬取的url。

将爬取完成的url從待爬取url集合移動到已爬取url集合。

1、記憶體(python記憶體)

待爬取url集合:set()

已爬取url集合:set()

urls(url, is_crawled)

待爬取url集合:set

已爬取url集合:set

大型網際網路公司,由于緩存資料庫的高性能,一般把url存儲在緩存資料庫中。小型公司,一般把url存儲在記憶體中,如果想要永久存儲,則存儲到關系資料庫中。如果你想學習python可以來這個群,首先是四七二,中間是三零九,最後是二六一,裡面有大量的學習資料可以下載下傳。

将url對應的網頁下載下傳到本地,存儲成一個檔案或字元串。

建立baidu.py,内容如下:

指令行中執行<code>python baidu.py</code>,則可以列印出擷取到的頁面。

上面的代碼,可以修改為:

建立baidu2.py,内容如下:

我們想要檢視一下,我們的請求是否真的攜帶了參數,是以需要使用fiddler。

打開fiddler之後,卻意外發現,上面的代碼會報錯504,無論是baidu.py還是baidu2.py。

Python爬蟲基礎前言 爬蟲架構 URL管理器 網頁下載下傳器(urllib) 網頁解析器(BeautifulSoup) 後記

雖然python有報錯,但是在fiddler中,我們可以看到請求資訊,确實攜帶了參數。

Python爬蟲基礎前言 爬蟲架構 URL管理器 網頁下載下傳器(urllib) 網頁解析器(BeautifulSoup) 後記
Python爬蟲基礎前言 爬蟲架構 URL管理器 網頁下載下傳器(urllib) 網頁解析器(BeautifulSoup) 後記

然而,然而,然而。。。神轉折出現了!!!

Python爬蟲基礎前言 爬蟲架構 URL管理器 網頁下載下傳器(urllib) 網頁解析器(BeautifulSoup) 後記

從網頁中提取出有價值的資料和新的url清單。

為了實作解析器,可以選擇使用正規表達式、html.parser、beautifulsoup、lxml等,這裡我們選擇beautifulsoup。

其中,正規表達式基于模糊比對,而另外三種則是基于dom結構化解析。

1、安裝,在指令行下執行<code>pip install beautifulsoup4</code>。

Python爬蟲基礎前言 爬蟲架構 URL管理器 網頁下載下傳器(urllib) 網頁解析器(BeautifulSoup) 後記
Python爬蟲基礎前言 爬蟲架構 URL管理器 網頁下載下傳器(urllib) 網頁解析器(BeautifulSoup) 後記

1、建立beautifulsoup對象

2、通路節點

3、指定tag、class或id

4、從文檔中找到所有<code>&lt;a&gt;</code>标簽的連結

Python爬蟲基礎前言 爬蟲架構 URL管理器 網頁下載下傳器(urllib) 網頁解析器(BeautifulSoup) 後記

出現了警告,根據提示,我們在建立beautifulsoup對象時,指定解析器即可。

5、從文檔中擷取所有文字内容

6、正則比對

python爬蟲基礎知識,至此足夠,接下來,在實戰中學習更進階的知識。