這是個人第五篇原創文章
python
喜歡爬蟲的夥伴都知道,在爬網站的內容的時候並非一爬就能夠了,有時候就會遇到一些網站的反爬蟲,折回讓你爬不到數據,給你返回一些404,403或者500的狀態碼,這有時候會讓人苦不堪言,就如我昨天發的爬網易雲音樂評論,在你爬的數據較多時,網站認爲你是一個機器,就不讓你爬了,網易雲就給我返回了一個{"code":-460,"msg":"Cheating"},你不看下他的返回內容還不知道本身被反爬蟲,不過不用擔憂,既然網頁有反爬蟲,可咱們也有反反爬蟲,今天就給你們說說反爬蟲與反反爬蟲。mysql
1web
網頁的反爬蟲sql
1.經過網頁的請求頭
瀏覽器
首先咱們先看看網易雲音樂評論的請求頭
服務器
User-Agent:這個是保存用戶訪問該網站的瀏覽器的信息,我上面這個表示的是我經過window的瀏覽器來訪問這個網站的,若是你是用python來直接請求這個網站的時候,這個的信息會帶有python的字眼,因此網站管理員能夠經過這個來進行反爬蟲。微信
Referer:當瀏覽器發送請求時,通常都會帶上這個,這個可讓網站管理者知道我是經過哪一個連接訪問到這個網站的,上面就說明我是從網易雲音樂的主頁來訪問到這個頁面的,若你是用python來直接請求是,就沒有訪問來源,那麼管理者就垂手可得地判斷你是機器在操做。網絡
authorization:有的網站還會有這個請求頭,這個是在用戶在訪問該網站的時候就會分配一個id給用戶,而後在後臺驗證該id有沒有訪問權限從而來進行發爬蟲。
機器學習
2.用戶訪問網站的ippost
當你這個ip在不斷地訪問一個網站來獲取數據時,網頁後臺也會判斷你是一個機器。就好比我昨天爬的網易雲音樂評論,我剛開始爬的一首《海闊天空》時,由於評論較少,因此我容易就獲得全部數據,可是當我選擇爬一首較多評論的《等你下課》時,在我爬到800多頁的時候我就爬不了,這是由於你這個ip的用戶在不斷地訪問這個網站,他已經把你視爲機器,因此就爬不了,暫時把你的ip給封了。
2
咱們的反反爬蟲
1.添加請求頭
既然在請求網頁的時候須要請求頭,那麼咱們只須要在post或者get的時候把咱們的請求頭加上就能夠了,怎樣加?可使用requests庫來添加,在post,get或者其餘方法是加上headers參數就能夠了,而請求頭不須要複製全部的信息,只須要上面的三個之中一個就能夠,至於哪一個本身判斷,或者直接添加全部也能夠,這樣咱們就能夠繼續爬了。
2.使用代理ip
如果網站把你的ip給封了,你添加什麼的請求頭也都沒有用了,那咱們就只有等他解封咱們才能夠繼續爬嗎?我能夠十分自信告訴你:不須要,咱們可使用代理ip來繼續爬,咱們能夠爬取網絡上的免費ip來爬,至於免費的代理ip質量怎樣大家應該知道,有必要能夠買些難免費的,這樣好點,咱們平時的練習用免費的代理ip就能夠了,能夠本身爬取一些免費代理ip建成ip池,而後爬的時候就把ip隨機取出來,我偷偷告訴你:小編明天的文章就是教你怎樣搭建本身的代理ip池。
結束語:上面的只是我的在爬一些網站時候遇到的一些反爬蟲,這只是很簡單的,還有那些動態網站的反爬蟲本身尚未接觸,等到之後接觸了,再一 一補充。最後給你們在爬蟲上的建議,就是爬取速度不要太快,最好每幾個就隔幾秒,不要給服務器形成太大的壓力,也能夠在爬蟲的時候選擇一些訪問量少點的時間段,這是對服務器好,也是對你本身好!
python電子書:公衆號回覆pdf
黑馬的2017年python零基礎教程:公衆號回覆:黑馬
機器學習(裏面有優達資源):公衆號回覆:機器學習
某課的python入門與進階課程:公衆號回覆入門
上一篇文章:利用python爬取網易雲音樂,並把數據存入mysql
平常學python
一個專一於python的公衆號
本文分享自微信公衆號 - 平常學python(daily_learn)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。