1. 程式人生 > >我與汽車之家的三生三世

我與汽車之家的三生三世

說起爬蟲,目前存在許多流行的爬蟲框架。其中最著名的莫過於Python語言方面的Scrapy,Java語言方面的Webcollector。它們都是開源的爬蟲工具,根據不同的使用場景、業務特點、開發人員的語言偏好,可以選擇不同功能的開源框架。當然老司機,也可能自己開發一種爬蟲功能框架,畢竟自己編寫的才能夠更好的配置、控制、使用爬蟲,完成爬蟲業務的需求。

第一生

初進入爬蟲坑洞,感覺爬蟲很難。剛開始,選擇的是使用Jsoup+Java基本爬蟲任務。當然是小量的資料,主要是做個人的研究學習資料。

剛開始,汽車之家沒有複雜的反扒蟲策略,所以非常順利的爬取到了需要的資料。這時候,感覺不過如此 _^_。

後來想要更新一下資料,發現以前的程式碼不能使用了,瞬間傻呆了。逐漸排除各種干擾因素,加上使用Chrome開發者工具不斷的研究發現,汽車之家變聰明瞭。才不到一個月的時候,它們網站內部的一些板塊,採用了高階的發爬蟲功能措施。

這一生,Game Over…

第二生

針對汽車之家的反爬蟲措施結合百度的內容,我發現使用Phantomjs+JS+Java呼叫的方式,可以獲取到汽車之家相關模組的內容。

使用Phantomjs無介面模擬瀏覽器可以執行JS,這樣就可以跳過汽車之家設定的各種坑,還可以使用JS獲取被隱藏掉的文字內容。這樣,又可以爬蟲到想要的資料啦 _^_,而且感覺高大上了不少。

但是,偶然的機會發現,汽車之家好像又出了一套新的發爬蟲規則,這就是IP訪問限制。這樣就不能自由的爬蟲了,需要找到新的解決方案。

第二生,就這樣結束了…

第三生

如果同一個IP地址大量的訪問汽車之家網站,就會存在以下情況
1. 有一些訪問會出現Timeout的情況;
2. 返回碼為429,也就是限制訪問的請求數。

這時候,如果想要繼續獲取汽車之家的資料,就要從IP代理的角度,或其它措施來處理了。這個時候,一般是需要破費的。

剛開始,使用爬取免費的IP代理,比如西刺IP、IP181、快代理等代理網站,但是時間一長,免費代理IP,基本上就廢掉了。這時候,還是需要使用付費的代理IP。一方面,不需要自己去考慮代理問題了,有服務商提供維護工作;另一方面,避免出現各種被攻擊事件發生,相當於添加了一個隔離層。

總結

通過爬蟲資料,總結如下:
1. 爬蟲資料是一個時間輸出的過程,大量的爬蟲時間消耗來獲取資料;
2. 大規模爬蟲,是需要破費的;
3. 資料越來越成為一種資產的表現形式;
4. 網站在爬蟲與反爬蟲的對抗中不斷的升級,防禦網絡、識別黑戶模型不斷完善。