天天看點

python爬蟲技術的選擇

   本篇文章不是入門帖,需要對python和爬蟲領域有所了解。 

        爬蟲又是另外一個領域,涉及的知識點比較多,不僅要熟悉web開發,有時候還涉及機器學習等知識,不過在python裡一切變的簡單,有許多第三方庫來幫助我們實作。使用python編寫爬蟲首先要選擇合适的抓取子產品,最簡單的功能就是能發送和處理請求, 下面就介紹幾個常用的抓取的方式。

       一、python 自帶的urlib2和urlib或者第三方子產品requests 

         這種方案适合簡單的頁面爬蟲,比如爬取部落格園推薦文章。

    urllib2和urllib是python自帶子產品可用來發送處理請求,雖然比較靈活但API易用性較差,是以一般都要進行二次封裝,我曾經也進行過封裝,最後發現自己封裝出來的子產品無限趨近于非常成熟的requests庫,是以還是直接使用requests吧,當然requests隻發送和接受請求,對于頁面分析還要配合lxml或beautifulsoup等第三方庫進行。進階點的爬蟲不僅僅是發送和處理請求,還需要處理異常,請求速度控制等問題,這就需要我們寫額外的代碼去控制,當然我們可以自己寫隻是時間問題,但完全沒有必要,接下來我會介紹第二種方案。

   二、scrapy架構  

         scrapy是爬蟲領取的佼佼者,目前我做的項目無論複雜與否,都采用scrapy進行,對于請求排程,異常處理都已經封裝好了,而且有第三方的scrapy-redis還可以支援分布式,我們把關注點放在更重要的頁面分析和規則編寫上,代碼可以參考我github上的例子。

         scrapy抓取虎嗅網文章:  https://github.com/world1234567/scrapy_for_huxiu

  三、python selenium

       這種方式我稱為終極必殺器,一般是實在沒辦法的時候才用,以前我在利用某家搜尋引擎抓取文章時,該搜尋引擎采用的比較高難度的反爬蟲機制而且不斷變化讓人找不到規律,最典型的特點就是cookie會随機隐藏到某個頁面js和圖檔中,解決方案就是模拟浏覽器的行為加載所有js等靜态資源檔案,如果自己寫個浏覽器取解析太扯蛋了,如果chrome浏覽器能開放接口,通過chrome的加載方式擷取頁面的内容就好了,這就是selenium了,selenium加上随機等待時間可以模拟出和人非常類似的操作行為,缺點就是速度較慢,但是一般爬蟲對抓取速度要求不高,重要的是穩定性,這種方式對于抓取反爬蟲機制做的好的大型網站比較适用。

       總結,對于大部分爬蟲需求直接用scrapy解決,如果解決不了再采用第一種或第三種方案,就這麼簡單。

轉載于:https://www.cnblogs.com/zw369/p/6123569.html