我們經(jīng)常收集一些數(shù)據(jù),但是當(dāng)數(shù)據(jù)很少的時候,我們會習(xí)慣性地手動下載,但是如果數(shù)量很大,我們肯定想找一個工具來幫助收集。
比如說使用了一些采集工具,但是由于這些工具都是設(shè)置好的,不符合我們的需求,如果要求比較低,就要使用。如果你要求很高,不妨做一個爬蟲,抓取你想要的任何信息。
這取決于你是否能寫爬行動物。其實很簡單。邊肖將為大家分享抓取網(wǎng)頁數(shù)據(jù)的案例。
1.獲取網(wǎng)頁信息。
動態(tài)IP模擬器
Urllib模塊提供了一個讀取網(wǎng)頁數(shù)據(jù)的接口,我們可以像讀取本地文件一樣在www和ftp上讀取數(shù)據(jù)。首先,我們定義了一個getHtml()函數(shù):
urllib.urlopen()方法用于打開一個URL地址。
read()方法用于讀取URL上的數(shù)據(jù),將URL傳遞給getHtml()函數(shù),然后下載整個頁面。執(zhí)行程序會打印出整個網(wǎng)頁。
2.過濾頁面數(shù)據(jù)。
Python提供了非常強大的正則表達(dá)式,所以我們需要先了解一點Python正則表達(dá)式。
如果我們在百度貼吧找到一些漂亮的壁紙,可以查看前面部分的工具。找到圖片的地址,如src = " http://imgsrc . Baidu . com/forum......jpg" pic _ ext = "JPEG "。
按如下方式修改代碼:
我們還創(chuàng)建了getImg()函數(shù),用于過濾獲得的整個頁面中所需的圖片連接。re模塊主要包含正則表達(dá)式:
Re.compile()可以將正則表達(dá)式編譯成正則表達(dá)式對象。
re.findall()方法讀取html中包含imgre(正則表達(dá)式)的數(shù)據(jù)。
運行腳本將獲得整個頁面中包含的圖片的網(wǎng)址。
3.保存數(shù)據(jù)。
通過for循環(huán)遍歷過濾后的圖片地址,并將其保存在本地。代碼如下:
動態(tài)IP模擬器
這里的核心是使用urllib.urlretrieve()方法直接將遠(yuǎn)程數(shù)據(jù)下載到本地。
通過for循環(huán)遍歷獲得的圖片連接,重命名圖片文件名以使其看起來更標(biāo)準(zhǔn),并通過x變量為命名規(guī)則添加1。默認(rèn)情況下,保存位置是存儲程序的目錄。當(dāng)程序運行時,您將在目錄中看到本地下載的文件。
以上是爬蟲抓取網(wǎng)頁數(shù)據(jù)的案例分享。如今大數(shù)據(jù)時代,數(shù)據(jù)很多,需要收集足夠的數(shù)據(jù)進行分析,結(jié)果才會有價值。爬蟲抓取數(shù)據(jù)時,要記得使用代理IP,這樣可以讓爬蟲高效抓取數(shù)據(jù),在更短的時間內(nèi)產(chǎn)生結(jié)果。找代理IP,IP模擬器代理很好,不僅可以使用全國IP地址,而且是高度匿名的,而且效果更好。