python爬蟲_爬蟲技術的選擇

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

       1、python 自帶的urlib2和urlib或者第三方模塊requests web

         這種方案適合簡單的頁面爬蟲,好比爬取博客園推薦文章。redis

    urllib2和urllib是python自帶模塊可用來發送處理請求,雖然比較靈活但API易用性較差,因此通常都要進行二次封裝,我曾經也進行過封裝,最後發現本身封裝出來的模塊無限趨近於很是成熟的requests庫,因此仍是直接使用requests吧,固然requests只發送和接受請求,對於頁面分析還要配合lxml或beautifulsoup等第三方庫進行。高級點的爬蟲不單單是發送和處理請求,還須要處理異常,請求速度控制等問題,這就須要咱們寫額外的代碼去控制,固然咱們能夠本身寫只是時間問題,但徹底沒有必要,接下來我會介紹第二種方案。chrome

   2、scrapy框架  瀏覽器

         scrapy是爬蟲領取的佼佼者,目前我作的項目不管複雜與否,都採用scrapy進行,對於請求調度,異常處理都已經封裝好了,並且有第三方的scrapy-redis還能夠支持分佈式,咱們把關注點放在更重要的頁面分析和規則編寫上cookie

  3、python selenium框架

       這種方式我稱爲終極必殺器,通常是實在沒辦法的時候才用,之前我在利用某家搜索引擎抓取文章時,該搜索引擎採用的比較高難度的反爬蟲機制並且不斷變化讓人找不到規律,最典型的特色就是cookie會隨機隱藏到某個頁面js和圖片中,解決方案就是模擬瀏覽器的行爲加載全部js等靜態資源文件,若是本身寫個瀏覽器取解析太扯蛋了,若是chrome瀏覽器能開放接口,經過chrome的加載方式獲取頁面的內容就行了,這就是selenium了,selenium加上隨機等待時間能夠模擬出和人很是相似的操做行爲,缺點就是速度較慢,可是通常爬蟲對抓取速度要求不高,重要的是穩定性,這種方式對於抓取反爬蟲機制作的好的大型網站比較適用。機器學習

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

相關文章
相關標籤/搜索