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

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

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

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

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

(2) 效率很低。

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

尋找爬蟲入口

1 、本次任務的入口

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

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

從上面的圖中可以發現返回的數據量都在百萬甚至是千萬級別。

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

2、其他的入口

(1) 移動端入口

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

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

這種方法也不是萬能的,有的時候我們可以把網址發到我們的手機上,然後手機瀏覽器打開,看一下在手機上面顯示的格式是否與電腦上的不一樣,如果不一樣的話,就可以再把手機瀏覽器的網址複製一下發到電腦上了。

(2)網站地圖

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

(3)修改網址中的數值

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

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

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

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。

總結

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


推薦閱讀:

五、信息標記與查找
輪帶逛終極版! 抓取輪子哥(vczh)全部知乎動態
網易雲音樂Ajax Post參數加密方法
回顧一個月的爬蟲學習

TAG:Python | python爬蟲 | 爬蟲計算機網路 |