1. 程式人生 > >Java:java爬蟲獲取動態網頁的資料

Java:java爬蟲獲取動態網頁的資料

說明: 只是分享一種解決方案,程式碼以及部分截圖不方便貼出,請諒解!

前段時間一直在研究爬蟲,抓取網路上的特定的資料,如果只是靜態網頁就是再簡單不過了,直接使用Jsoup

Document doc = Jsoup.connect(url).timeout(2000).get();
  • 1

獲取到Document 然後就想幹嘛就幹嘛了,但是一旦碰到一些動態生成的網站就不行了,由於資料是網頁載入完成後執行js程式碼載入的,或者是使用者滑動瀏覽觸發的js載入資料,這樣的網頁使用Jsoup顯然拿不到想要的資料。

後來使用 Selenium 來獲取動態網頁的資料,可以成功的拿到資料(實現方法),將程式打包後放在一臺機器上執行,開始測試,然後結果不那麼理想,經常會出現記憶體溢位,或者瀏覽器升級造成驅動與瀏覽器版本不匹配等一些列問題,今天早上來到公司發現程式又炸了,心裡千萬只草泥馬啊!大半夜又沒人動這臺機器,滑鼠鍵盤全部失效,只好重啟,不說找什麼問題了,這樣測試修改測試太折騰人了,於是打算放棄使用Selenium 穩定行太差,有考慮使用htmlunit 以及其他的那些工具但是效果都不太好,走頭無路了,開始想歪點子,(其實也是一種好的解決辦法,也實現了效果)。

首先動態網頁,既然是動態的,那麼肯定是在瀏覽器載入網頁之後又對伺服器傳送了網路請求,如果我拿到網路請求的url,模擬引數,自己傳送請求,解析資料不是更好,開始動手:

抓包工具:fiddle 如果不瞭解fiddle建議百度瞭解一下

安裝後開啟fiddle,開啟瀏覽器,開啟目標url,然後就可以在fiddle看到開啟這個網頁所有的網路請求: 這裡就不貼圖了,怕人家搞我。。。。 然後就是一個一個檢視網路請求:這裡寫圖片描述

先看左邊的圖示,直接跳過圖片,顯然我們需要的是資料,重點檢視文字格式的請求,然後右鍵 copy-> just url 複製url到瀏覽器看看能拿到什麼,最後發現18行的請求就是資料介面,可以直接拿到資料,而且是json格式!!!!!!!!

真是太爽了,直接json,後面的事,就容易啦,解析資料。。。。。。。。略略略。。。。。。

不多說,繼續敲程式碼去,這裡只是分享一下解析動態網頁的一種方法,這裡寫的不明白的地方歡迎評論,一起討論找更好的方法來解決問題!

2016-11-07 伽南香

--------------------- 本文來自 伽南香 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/u011343735/article/details/53507569?utm_source=copy