學了一段時間的爬蟲,現在就把我的一些經驗分享給大家。學習爬蟲的時候可以用本文作為適當的參考,有不當的或者不明確或者對本文有意見的地方都請大家指出,能讓本文加以改正,更加完善。
python 版本2.7
爬蟲的介紹
首先爬蟲是什么 ?
在我看來 爬蟲是能夠自動聯網 通過指定的方式獲取網絡上的一些信息 并把這些信息下載到本地的程序或腳本
那么爬蟲的可爬取的范圍有多少?
凡是能夠通過瀏覽器獲得的所有內容都能夠爬取得到。
爬取的作用是什么?
爬取的作用是能夠自動地獲取自己想要的一些有價值的信息。
爬蟲的核心結構
爬蟲的核心結構有三點,請求,解析,以及存儲
這三點會逐個單獨的講解
請求
瀏覽器是獲取信息最常用的方式之一,爬蟲的原理和瀏覽器的原理在某些地方是一致的
那么我們首先了解通過瀏覽器是怎樣獲取信息的
以簡書為例 首先在瀏覽器的導航欄里輸入http://www.lxweimin.com/ 然后按下回車鍵 ,內容就出來了,當然還可能有其他的內容之類的。回過頭來,我們要獲取簡書的內容,首先得提前通知簡書服務器我要訪問你啦,你把你的首頁的數據給我,讓我可以瀏覽。這種提前通知的方式,就是請求。
我請求簡書首頁的數據,簡書服務器表示我收到了,然后順著你的IP的地址就給你發過來了。
然后簡書搜索框和以及其他內容就會被渲染出來。
學過WEB的肯定知道,百度首頁或者說絕大多數網頁的內容數據都是通過HTML+CSS以及數據庫的數據來組合在一起的。那么為什么瀏覽器上面沒有這些標簽呢,這個大家肯定知道,是因為瀏覽器渲染了這些數據,至于是怎么渲染的那么是另一回事了。那么沒有經過渲染的數據就是源碼,而我們爬取得到的就是網頁的源碼。
然后我們可以看看這些源碼,擁有非常多的標簽在里面,但是我們并不需要。
這時候需要通過解析的方式獲取我們想要的數據了。
解析
如何才能在這些網頁源代碼中找到我們需要的數據呢,就得用解析了。
我解析的方式一般有兩種,一種是正則表達式,而另外一種則是DOM樹+XPATH。而我現在主要用的方式則是第二種。兩種方式的區別是我用一個例子來闡述,A和B夫妻給全家賣了圣誕禮物,兒子C問屬于他的那份在哪,母親A告訴兒子,禮物是在一個紅色禮物和一個黃色禮物之間,父親B告訴兒子禮物是在所有方形禮物盒中的最小的那份。正則表達式就是例子中的A方法,DOM樹+XPATH則是B方法。
在我看來 正則表達式傾向于一維位置的搜索,而DOM樹更傾向于二維特征的搜索。
儲存
針對定位后的數據的存儲就很好辦了,只要定位數據后把數據保存到本地即可。
也可以直接print到終端,或者保存到TXT文本中,或者數據庫中都是可以的。
接下來將會用幾個程序來講講是如何爬取的。