前段時間一直在研究爬蟲,抓取網路上的特定的資料,如果只是靜態網頁就是再簡單不過了,直接使用jsoup
:
document doc = jsoup.connect(url).timeout(2000).get();
獲取到document
然後就想幹嘛就幹嘛了,但是一旦碰到一些動態生成的**就不行了,由於資料是網頁載入完成後執行js**載入的,或者是使用者滑動瀏覽觸發的js載入資料,這樣的網頁使用jsoup顯然拿不到想要的資料。
後來使用 selenium 來獲取動態網頁的資料,可以成功的拿到資料(實現方法),將程式打包後放在一台機器上執行,開始測試,然後結果不那麼理想,經常會出現記憶體溢位,或者瀏覽器公升級造成驅動與瀏覽器版本不匹配等一些列問題,今天早上來到公司發現程式又炸了,心裡千萬隻草泥馬啊!大半夜又沒人動這台機器,滑鼠鍵盤全部失效,只好重啟,不說找什麼問題了,這樣測試修改測試太折騰人了,於是打算放棄使用selenium 穩定行太差,有考慮使用htmlunit 以及其他的那些工具但是效果都不太好,走頭無路了,開始想歪點子,(其實也是一種好的解決辦法,也實現了效果)。
首先動態網頁,既然是動態的,那麼肯定是在瀏覽器載入網頁之後又對伺服器傳送了網路請求,如果我拿到網路請求的url,模擬引數,自己傳送請求,解析資料不是更好,開始動手:
抓包工具:fiddle
安裝後開啟fiddle,開啟瀏覽器,開啟目標url,然後就可以在fiddle看到開啟這個網頁所有的網路請求:
這裡就不貼圖了,怕人家搞我。。。。
然後就是乙個乙個檢視網路請求:
先看左邊的圖示,直接跳過,顯然我們需要的是資料,重點檢視文字格式的請求,然後右鍵 copy-> just url 複製url到瀏覽器看看能拿到什麼,最後發現18行的請求就是資料介面,可以直接拿到資料,而且是json格式!!!!!!!!
2016-11-07
伽南香
動態網頁爬蟲
方式 優點缺點 分析介面 直接可以請求到資料,不需要做任何解析工作,量少,效能高 分析介面比較複雜,特別是一些通過js混淆的介面,容易被發現是爬蟲 selenium 直接模擬瀏覽器的行為,瀏覽器可以請求到的,使用 selenium 也能請求到,比較穩定 量多,效能低 selenium相當於是乙個機械...
動態網頁爬蟲
network 記錄的是從開啟瀏覽器的開發者工具到網頁載入完畢之間的所有請求。如果你在網頁載入完畢後開啟,裡面可能就是空的,我們開著開發者工具重新整理一下網頁即可 爬蟲中常用的請求型別有 all xhr img 和 media,剩下的了解一下即可 常用的請求資訊,比如請求的名稱 狀態碼 型別 資料大...
python動態爬蟲 Python動態網頁爬蟲技術
這一講,我將會為大家講解稍微複雜一點的爬蟲,即動態網頁的爬蟲。動態網頁技術介紹 動態網頁爬蟲技術一之api請求法 動態網頁爬蟲技術二之模擬瀏覽器法 google chrome driver安裝 課後作業 關於作者 動態網頁技術介紹 所謂的動態網頁,是指跟靜態網頁相對的一種網頁程式設計技術。靜態網頁,...