Python爬蟲(一)

什麼是爬蟲?

 

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

網絡爬蟲(又被稱爲網頁蜘蛛,網絡機器人,在FOAF社區中間,更常常的稱爲網頁追逐者),是一種按照必定的規則,自動地抓取萬維網信息的程序或者腳本。另一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲linux

額,這一大坨,總結來講就一句話,就是從某個網站上獲取某些你想要數據,而後保存起來。sublime-text

爬蟲能幹嗎?

 

爬蟲能夠幫你爬到你想要的東西,好比說你想下載某個網站上面的圖片、小視頻、文章、文件,或者說大家公司想獲取到對手公司網站上的一些數據用來分析市場,或者想要獲取某一類網站用戶的行爲,用來分析用戶的之後的走向,均可以用爬蟲來獲取到數據。再好比說你要作個什麼內容類的app,相似今日頭條的,那它裏面的這些內容從哪裏來的,它就是用爬蟲,爬各類網站上熱點新聞、八卦信息等等,再通過本身的加工放給用戶去看。瀏覽器

爬蟲的原理和實質

 

我們要從一個網站下載一個圖片的話怎麼辦,要瀏覽器裏面打開這個網站, 而後右鍵保存圖片到本地。網絡

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

爬蟲的實質呢,就是寫代碼發http請求(瀏覽器裏面打開發送的都是http請求),而後獲取到response,我們再從response裏面找到想要的數據,存儲到本地。框架

什麼是爬蟲協議?

 

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

怎麼查看一個網站的爬蟲協議呢,就在這個網站的域名後面加上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上面安裝的話,可能會有各類各樣的問題。

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

一、直接安裝 pip install scrapy

二、安裝的時候scrapy它要依賴不少其餘的模塊,通常都是其餘的模塊安裝的時候會報錯,由於pip安裝的版本和實際的操做系統須要的版本對應不上,好比說twisted

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

四、打開https://www.lfd.uci.edu/~gohlke/pythonlibs/,找到安裝報錯的模塊,手動下載對應操做系統的安裝包,手動安裝。

https://www.lfd.uci.edu/~gohlke/pythonlibs/這個網站是美國一個醫科大學的網站,他這個裏面有不少python第三方模塊的安裝包,打開這個網站以後,我們要裝twisted,就直接搜twisted就能夠了,能夠看到有好幾個安裝包,根據本身的python版本和操做系統版本下載就行了,看下面的圖。

六、下載以後它是一個whl的文件,也是直接用pip安裝就好了

七、重複第一步

基本上安裝scrapy出現的錯誤,都是由於單個依賴包有問題致使的,用此方法能夠解決大部分問題

相關文章
相關標籤/搜索