從爬蟲中我們能學習到什麼?

        前段時間,幫公司搞了一下爬蟲,爬取了一些數據給公司做業務分析用,有點小小的思考,在這裏分享給大家!

注:本文涉及到的爬蟲皆爲java爬蟲設計,但是關於爬蟲和防爬的策略都是共通的。

爬蟲這個東西,說起來可能有一部分人聽着就煩,還有一部分人聽着眼前一亮,這是爲啥呢?我們都知道,技術是無罪的,有過的是使用技術的人,爬蟲從最開的發展出來到今天也是走過了不少歷程了,在我眼中爬蟲有下面這幾個作用:

       1、爬取別人的數據,爲自己公司決策和其他方面做參考。

       2、爬取自己的數據,節省了跨系統跨頁面的數據獲取成本,所見即所得。

       3、做性能測試,測試web接口的穩定性和承載量。

       4、鏈路爬取數據,捕獲用戶行爲信息,提供用戶行爲分析的數據來源。

對爬蟲比較頭疼的人:

      系統架構師,風控專家,web接口開發者等

對爬蟲比較感興趣的人:

     甲方,你的老闆,公司的數據分析員,大數據部門

        由於業務的發展和爬蟲應用的廣泛性,其實在互聯網上,大衆已經逐漸接受了有爬蟲的存在,並且形成了一個協定,就是允許你爬取我的那些地方的數據,不允許你爬取我哪些地方的數據(敏感性),或者是用哪些爬蟲爬取數據。

這個在哪裏可以看到呢?在大網站的主域名後面加上/robots.txt  就可以看到,比如我們看一下京東的:

https://www.jd.com/robots.txt

京東的協議頁面就明確的指出了,不能爬取的頁面(也就是disallow)還有不能使用的爬蟲(user-agent)。

        有質素的程序員或者公司呢,都會先看一下這個地方的聲明,然後再爬取這個公司的網站信息,但是你不遵守,倒是也是爬取到其他的一些信息,只不過網警或者被爬公司追查到你之後,可能會請你去警察局喝茶了。。。

        我實現爬蟲的方式,從簡單到複雜有這麼幾種:

     1、最簡單的爬蟲:其實就是對網站發起http請求,然後獲得數據嘛,如果那個網站防護或者加密不是很嚴謹的話,我們這樣的開發人員是很容易在瀏覽器的dev模式下,通過network分析出來他的頁面加載了,返回list數據行的http接口了,如果登錄再不需要認證的話,那麼我們就可以直接發起http請求,根據他返回的數據聲明實體,進行數據收取操作了。目前我寫的最簡單的爬蟲就是使用httpclient,發送http請求,如果需要登錄,則保留cookies的信息,然後重複使用在每個接口上,就可以實現登錄訪問了。

     2、稍微複雜一點的:你在瀏覽器dev模式下看不到network下的返回信息,但是這個網站有個特點,就是訪問每個url是有規律可循的,比如在url裏面就帶上了檢索條件,或者分頁條件,拿csdn舉例子,就是博客詳情頁面就是你的博客地址+博客id(一串數字),而博客列表就是博客地址+/article/list/+頁數(第一頁就是博客地址),這樣,我們使用webmagic框架,就可以通過這樣規律的地址實現設定爬取數據。

    3、再稍微高級一點的,需要使用到組合框架了,比如需要登錄的,我可以模擬出來一個谷歌瀏覽器,然後手動登錄,之後再用程序去掃描頁面內容,這個可以使用到webmagic+selenium框架可以實現。

    4、如果是需要同時爬取多個頁面,使用selenium可能比較消耗內存,可以搭配phantomjs來使用,他可以模擬一個瀏覽器內核,從而減少內存的佔用等。

        從中這些來看,爲了應對一些被爬取網站的製作需求,爬蟲其實是一個綜合能力考驗的場所,比如http請求的使用,模擬,破解,緩存,間歇心跳等策略的使用等等。

那麼我們從爬蟲上可以學習到什麼呢:

       1、任何一個技術都不是孤島,都需要結合其他的東西來使用。

       2、技術是無罪的,爬蟲這種技術可以爲公司帶來效益,也可以爲公司帶來官司。

       3、數據分析和埋點操作是每個公司都應該掌握的一項技術,在未來的發展中,爲公司決策會帶來不小的收益。

       4、我們再開發-設計網絡接口的時候,也需要提防爬蟲的存在,雖然不能避免,但是可以讓他爬取數據的速度慢一點(當爬取速度沒有數據更新速度快時,數據是無效的)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章