爬蟲的小技巧之–如何尋找爬蟲入口

四毛發表於2018-03-05

大家好,我是四毛,最近開通了個人公眾號“用Python來程式設計”,歡迎大家“關注”,這樣您就可以收到優質的文章了。

爬蟲的小技巧之–如何尋找爬蟲入口

今天主要分享一些關於尋找爬蟲入口的小技巧心得。

寫著篇文章的原因是在工作中要去做一個關於作業幫的任務,而作業幫只有app, 當然可以通過對app進行抓包來獲取資料;同時也可以根據一些問題的相關問題,層層遞進去獲得資料。我一開始採用的就是後一種方法,但是這種方法有幾個不太好的地方:

(1) 很容易獲取到髒資料。比如我本來的任務是獲取一些語文方面的問題資料資料,但是當我以某一個語文類的問題為初始網址進行爬取時,發現後面獲得的資料竟然都是英語型別的了。

(2) 效率很低。

那麼,對於這種的爬蟲任務到底有沒有更好的爬蟲入口呢?很明顯,有的。

尋找爬蟲入口

1 、本次任務的入口

這個爬蟲的更好的入口就是我們平常使用的搜尋引擎。搜尋引擎雖然有很多種,但是其實都是在幹一件事,收錄網頁,處理,然後提供搜尋服務。在平時使用的過程中,我們通常都是直接輸入了關鍵詞就直接搜尋了,但是其實還有很多的搜尋技巧, 比如對於這個任務來說,只要我們這樣搜尋,就可以得到我們想要的資料了。

現在我們在百度,谷歌, 搜狗, 360,必應裡都分別試一下:

爬蟲的小技巧之–如何尋找爬蟲入口
爬蟲的小技巧之–如何尋找爬蟲入口
爬蟲的小技巧之–如何尋找爬蟲入口
爬蟲的小技巧之–如何尋找爬蟲入口
爬蟲的小技巧之–如何尋找爬蟲入口
從上面的圖中可以發現返回的資料量都在百萬甚至是千萬級別。

所以把這些資料作為這個任務的入口,顯然是更好的。至於說應對反爬蟲的措施,那就考驗個人的基本功了。

2、其他的入口

(1) 移動端入口

通過網站的移動端入口進行獲取資料,可以更好更快速的獲取資料。

尋找移動端入口的最簡單的方式就是用開啟谷歌瀏覽器的開發者模式以後,點選下面的手機樣子的東西,然後在重新整理一下就可以了。

爬蟲的小技巧之–如何尋找爬蟲入口
這種方法也不是萬能的,有的時候我們可以把網址發到我們的手機上,然後手機瀏覽器開啟,看一下在手機上面顯示的格式是否與電腦上的不一樣,如果不一樣的話,就可以再把手機瀏覽器的網址複製一下發到電腦上了。

(2)網站地圖

網站地圖是指可方便網站管理員通知搜尋引擎他們網站上有哪些可供抓取的網頁, 所以通過這些網站地圖可以更高效更方便的獲取一些作為下一級入口的網址。

(3)修改網址中的數值

首先申明,這個技巧不是萬能的。

這個技巧主要是通過對網址中的某些欄位的數值來從一次請求中最大限度的獲取所需的資料,減少請求數,也就減少了被網站封禁的風險, 也就可以提高爬蟲的效率。下面以一個例子為例:

當爬取QQ音樂的某一個歌手的全部音樂資料時,抓包獲得的格式如下:

https://xxxxxxxxx&singermid=xxxx&order=listen&begin={begin}&num={num}&songstatus=1

返回的資料包如下:

爬蟲的小技巧之–如何尋找爬蟲入口

其中的一些欄位值被我以xxx代替了,請注意這裡的num欄位,通常一個歌手的歌比較多時,資料都是通過下一頁展示出來的,所以這裡的begin就應該是每一頁第一條的對應的值,而num則是這個頁面有多少條資料。通常,我們可以一頁一頁的獲取資料, QQ音樂的預設值是30。那麼我們是不是非得至少請求4次才可以獲得完整資料呢?

當然不是,其實這個時候,我們可以自己試一下改變網址中的一些數值時,返回的結果是否會傳送變化。在這裡,我們就改變num與begin的值,其中設定num就是某一個歌手所有的歌曲數量的值,begin為0,這個時候再重新請求修改之後的網址,就可以得到下面的資料:

爬蟲的小技巧之–如何尋找爬蟲入口
從上面可以看到,返回了96條資料。

這樣,我們可以通過2次請求獲取到所有的資料了。第一個請求獲取total數目,然後再修改網址重新請求,這樣就可以獲得所有的資料了。

類似的欄位還有pagesize。

總結

上面的這些尋找爬蟲入口的小技巧可以使我們事半功倍,有的時候可以以最少的代價獲取到資料。

相關文章