使用Selenium作爬蟲小記

  以往,寫爬蟲的思路通常是用curl,urllib(python)或,HttpComponents(java)等發起request,而後讀取response,用xpath,或者類js操做dom的方式獲取須要的數據。html

  然而當遇到那種將數據藏在js裏面的狀況,好比sina weibo中,好友信息都是放在script節點裏,由js在client端動態append到頁面上,若是要獲取這種數據,那只有使用正則表達式了。java

  直到我發現了個叫Selenium的自動化測試框架。能夠經過程序啓動,控制瀏覽器的行爲。讓我省去了寫正則的時間。但缺點是框架很是重,效率很低。(畢竟他本來是用來作自動化測試的。。)python

  然而最近有一個需求,須要截取瀏覽器上的ajax請求。由於ajax請求是js發起的。我有2種方法。web

1,讀前臺js代碼,根據須要本身拼出想要的請求。(這方法針對沒有加密過的js,和簡單的需求適用)ajax

2,用selenium啓動瀏覽器,(我這裏用chrome),而後寫chrome插件,(chrome 有個API能夠對request進行過濾。https://developer.chrome.com/extensions/webRequest.html  )截獲指定的request。而後將此url,append到前臺頁面。正則表達式

3,用selenium獲取插件append的節點。捕獲請求。chrome

 

附,此方法適用於那種 對request的時間要求及頻度不過高的狀況。或者說 request相對來講不會成爲瓶頸的狀況。好比用此方法捕獲xx視頻網站的真實地址xxx.flv xxx.mp4 ,此時下載視頻的耗時一定遠遠大於用selenium獲取視頻地址的時間。此時至關適合啊。。瀏覽器

相關文章
相關標籤/搜索