1. 程式人生 > 其它 >Python爬蟲(一)

Python爬蟲(一)

什麼是爬蟲?

爬蟲是什麼呢,就是地上爬的小蟲子,就是爬蟲咯。呵呵,開個玩笑,一般說的爬蟲都是網路爬蟲。那什麼是網路爬蟲呢,百度百科的解釋是這樣子的:

網路爬蟲(又被稱為網頁蜘蛛,網路機器人,在FOAF社群中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。另外一些不常使用的名字還有螞蟻、自動索引、模擬程式或者蠕蟲

額,這一大坨,總結來說就一句話,就是從某個網站上獲取某些你想要資料,然後儲存起來。

爬蟲能幹嘛?

爬蟲可以幫你爬到你想要的東西,比如說你想下載某個網站上面的圖片、小視訊、文章、檔案,或者說你們公司想獲取到對手公司網站上的一些資料用來分析市場,或者想要獲取某一類網站使用者的行為,用來分析使用者的以後的走向,都可以用爬蟲來獲取到資料。再比如說你要做個什麼內容類的app,類似今日頭條的,那它裡面的這些內容從哪裡來的,它就是用爬蟲,爬各種網站上熱點新聞、八卦資訊等等,再經過自己的加工放給使用者去看。

爬蟲的原理和實質

咱們要從一個網站下載一個圖片的話怎麼辦,要瀏覽器裡面開啟這個網站, 然後右鍵儲存圖片到本地。

那爬蟲呢,就是寫程式碼把上面的這個過程自動化,自動幫咱們做這個操作,不需要咱們再手動點了。這就是爬蟲的原理。

爬蟲的實質呢,就是寫程式碼發http請求(瀏覽器裡面打開發送的都是http請求),然後獲取到response,咱們再從response裡面找到想要的資料,儲存到本地。

什麼是爬蟲協議?

爬蟲協議就是你想用爬蟲爬我的網站,那麼你得聽我的,哪些你能爬,哪些你不能爬。

怎麼檢視一個網站的爬蟲協議呢,就在這個網站的域名後面加上robots.txt

比如說下面有:jd、百度、淘寶的爬蟲協議

jd:https://www.jd.com/robots.txt

淘寶的:https://www.taobao.com/robots.txt

百度的:https://www.baidu.com/robots.txt

如果你要爬的網站域名加上robots.txt是404,那你就可以隨心所欲的爬了。

不過就算爬蟲協議裡面寫了,你也可以不遵守,但是也得注意一下,有的公司發現的話,會起訴的。比如說前幾年著名的百度控訴360爬蟲違反爬蟲協議,賠償70w。

爬蟲協議裡面有這麼幾個欄位:

User-agent:* 這個欄位的意思是允許哪個引擎的爬蟲獲取資料 * 代表所有型別的爬蟲都可以 Disallow:/admin/
這個欄位代表爬蟲不允許爬哪個路徑下面的資料,如果是/的話,就代表所有的路徑下面的資料都不能爬。

什麼是反爬蟲?

因為會有一些惡意的人,惡意的去用爬蟲爬咱們的系統,獲取一些資料用來做一些不好的事情,這樣就會咱們的網站造成危害。

反爬蟲就是幹這個事的,網站後臺有程式專門檢測發這個請求是爬蟲發的,還是使用者的正常請求(發請求就是開啟一個頁面),如果是爬蟲發的話,那麼就不給它返回資料,這就是反爬蟲。

當然有反爬蟲那就有針對反爬蟲的策略,就是看誰技術高低的問題了~

爬蟲框架

Scrapy是python開發的一個爬蟲框架,如果你要學習它的話,可能第一步在安裝的時候,就會遇到很多問題,因為Scrapy很多模組都是基於linux下的,可能你在mac上或者linux上面安裝的時候,不會有什麼問題,但是Windows上面安裝的話,可能會有各種各樣的問題。

這裡我就把遇到的問題整理下,怎麼解決。

1、直接安裝 pip install scrapy

2、安裝的時候scrapy它要依賴很多其他的模組,一般都是其他的模組安裝的時候會報錯,因為pip安裝的版本和實際的作業系統需要的版本對應不上,比如說twisted

3、在pip安裝scrapy的時候,他會自動安裝其他依賴的模組,安裝到哪個模組報錯了,它會停止安裝,看下面的圖,就在安裝twisted的時候報錯了

4、開啟https://www.lfd.uci.edu/~gohlke/pythonlibs/,找到安裝報錯的模組,手動下載對應作業系統的安裝包,手動安裝。

https://www.lfd.uci.edu/~gohlke/pythonlibs/這個網站是美國一個醫科大學的網站,他這個裡面有很多python第三方模組的安裝包,開啟這個網站之後,咱們要裝twisted,就直接搜twisted就可以了,可以看到有好幾個安裝包,根據自己的python版本和作業系統版本下載就好了,看下面的圖。

6、下載之後它是一個whl的檔案,也是直接用pip安裝就行了

1 pip install C:\Users\bjniuhanyang\Downloads\Twisted-17.9.0-cp35-cp35m-win_amd64.whl

7、重複第一步

基本上安裝scrapy出現的錯誤,都是因為單個依賴包有問題導致的,用此方法可以解決大部分問題