1. 程式人生 > >Java爬蟲進階-Jsoup+httpclient獲取動態生成的資料

Java爬蟲進階-Jsoup+httpclient獲取動態生成的資料

前面我們詳細講了一下Jsoup發現這玩意其實也就那樣,只要是可以訪問到的靜態資源頁面都可以直接用他來獲取你所需要的資料,詳情情跳轉-Jsoup爬蟲詳解,但是很多時候網站為了防止資料被惡意爬取做了很多遮掩,比如說加密啊動態載入啊,這無形中給我們寫的爬蟲程式造成了很大的困擾,那麼我們如何來突破這個梗獲取我們急需的資料呢,下面我們來詳細講解一下如何獲取

String startPage="https://item.jd.com/11476104681.html";

Document document = Jsoup.connect(startPage).userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36"
).get();

這時其實已經獲取到了整個頁面的資料,但是商品價格是通過回撥函式獲取後再填充上去的,所以這就要求我們寫爬蟲的開發者要很有耐心的去尋找價格資料的回撥介面,我們直接訪問這個介面就可以直接獲取這個價格,下面是演示:

這裡寫圖片描述

通過這張截圖可以看到他傳過來的只是一個靜態資源頁面根本沒有價格引數,那麼價格怎麼來的呢,繼續找發現這個介面:

這裡寫圖片描述

這裡寫圖片描述

你會發現在這個介面是很多引數拼接上去的,那麼我們要做的就是分析是不是所有的引數都有用

https://p.3.cn/prices/mgets?callback=jQuery9734926&type=1&area=1&pdtk=&pduid=14930020970791835891856
&pdpin=jd_6738608ee8eed&pdbp=0&skuIds=J_11476104681&source=item-pc

可以試著刪除一些引數發現最終這個介面需要的引數其實很簡單:

https://p.3.cn/prices/mgets?callback=jQuery9734926&type=1&area=1&skuIds=J_11476104681&source=item-pc

看到這裡是不是很激動了,你其實可以換一些其他的JD商品ID一樣能獲取到當前價格和最高價格已經那什麼價格我也不清楚,我們需要做的只是寫一個Httpclient模擬請求這個介面

String doGet = HttpUtils.doGet("https://p.3.cn/prices/mgets?callback=jQuery9734926&type=1&area=1&skuIds=J_"+"11476104681"+"&source=item-pc", null);
System.out.println(doGet);

結果是這樣:

jQuery9734926([{"id":"J_11476104681","p":"880.00","m":"980.00","op":"980.00"}]);

至於後面的你直接解析下JSON字串那麼你要的資料就GET到了。

注意一下

這是對回撥請求到的資料進行的再請求獲取,這只是對前面動態獲取商品價格的一個補充,這種情況是價格本身通過主連結沒有帶到頁面上而是載入過程中非同步請求填充的,還有的時候是資料帶過來了但是有相關的JS進行了相關處理我們還是獲取不到,這個時候我們就得通過其他手段來獲取這個資料,後面會講解

將這些Jsoup和httpclient整合成一個爬蟲模板完全可以完成你一些基本的爬取資料的操作,至於怎麼整合就看個人喜好了。

相關推薦

Java爬蟲-Jsoup+httpclient獲取動態生成資料

前面我們詳細講了一下Jsoup發現這玩意其實也就那樣,只要是可以訪問到的靜態資源頁面都可以直接用他來獲取你所需要的資料,詳情情跳轉-Jsoup爬蟲詳解,但是很多時候網站為了防止資料被惡意爬取做了很多遮掩,比如說加密啊動態載入啊,這無形中給我們寫的爬蟲程式造成了很

Java爬蟲-phantomJS+selenium2抓取網站圖片和小說

閒來無事,應小夥伴要求,最近寫了一個專門爬取小說和美女圖片的爬蟲工具類,有不足之處歡迎小夥伴們指出。準備工作:            新建maven工程,匯入pom依賴如下:<project xmlns="http://maven.apache.org/POM/4.0.

Java爬蟲(七)- httpClient: https 和 證書認證(講故事篇)

一、前言 本篇風格會偏向講故事,來記錄整個發現問題,解決問題的過程。具體的知識點總結放在後一篇。 前段陣子被分配了一個工單,要求抓取另一個險企B的資料。想著應該不會比上一家A麻煩了,險企A抓取資料過程中有幾次請求是跨域的,很多資料都是由ajax動態請求到的,

Java爬蟲(二)-- httpClient模擬Http請求+jsoup頁面解析

前言 在瞭解了爬蟲的大概原理和目前的技術現狀之後,我就開始了java爬蟲的蹣跚之旅。 首先我想到的是用框架,瞭解到的主流的Nutch、webmagic、webcollector等等,都看了一遍,最好懂的是webmagic,因為是國人開發的,有中文文件,看的很

Java開發之路

為我 變量 kafka 自然 ges 想想 javaweb 目前 沒有 背景一 我接觸Java開發已經一年多了了。 從剛開始生澀地接觸語法,惹得編譯器報各種語法錯誤;到接觸OOD的思想,封裝、繼承、多態,懵懵懂懂地聽說著它們;再到學習Web開發,想著這些也許並不重要,實際用

Java 新手:細說引用類型(編程隨想的博客)

system pan 程序 好的 https [1] css 又是 相同   在前幾天的帖子《Java性能優化[1]:基本類型 vs 引用類型》裏,俺大概介紹了“引用類型”與“基本類型”在存儲上的區別。昨天有網友在評論中批評說“引用類型變量和它所引用的對象”沒區分清楚,容易

Python爬蟲六之多程的用法

maxsize clas 生產 依然 queue consumer mac 裏的 filesize 前言 在上一節中介紹了thread多線程庫。python中的多線程其實並不是真正的多線程,並不能做到充分利用多核CPU資源。 如果想要充分利用,在python中大部分情況需要

java-繼承_抽象類_接口

完全 對象初始化 num cal ... obj ram 1.4 mce 一, 繼承的進階 1.1,成員變量 重點明確原理。 特殊情況: 子父類中定義了一模一樣的成員變量。 都存在於子類對象中。 如何在子類中直接訪問同名的父類中的變量呢? 通過關鍵字 super

java-異常-包的使用

too extends 跳轉 資源釋放 [] 也有 問題 子集 類的方法 一 finally 1.1 異常執行的順序 package test; public class Test { public static void main(String

Java面試部分集合

ber 基本 table 依賴 gif jdbc 時也 生成 clas 框架基礎 反射:反射是Java開發的一類動態相關機制。因為本身Java語言並不是一款動態語言,如果我們想要得到程序動態的效果,因此便引入了反射機制這一概念。 怎麽表達反射?

Java-Web系多個快 三帶極速六合AB盤列(三)--eclipse 配置maven

pac nexus apach onf pub conf eclipse jar包下載 阿裏 聯系方式:QQ:2747044651 網址聯系方式:QQ:2747044651 網址maven聯系方式:Maven項聯系方式:目對象模型(POM),可以通過一小段描述信息來管理項目

這是我見過最牛X的Java架構學習路線圖,沒有之一!

大部分職業都是需要有成長體系,才能讓人有奮發向上的追求。架構師就是程式設計師這個群體成長道路上往往會出現的一個重要節點。 每個好架構師都是一位出色的程式設計師。然而好的程式設計師進階為架構師,並不容易。 在規劃和設計系統架構時,涉及到方方面面的技術知識點,可選的方案也很多,如何在各種各樣,紛

python筆記26(爬蟲

一、scrapy框架簡介 1、什麼是Scrapy?   Scrapy是一個為了爬取網站資料,提取結構性資料而編寫的應用框架,非常出名,非常強悍。所謂的框架就是一個已經被集成了各種功能(高效能非同步下載,佇列,分散式,解析,持久化等)的具有很強通用性的專案模板。對於框架的學習,重點是要學習其框架的特性、各個

Java架構學習路線圖,看過的都說好!

   大部分職業都是需要有成長體系,才能讓人有奮發向上的追求。架構師就是程式設計師這個群體成長道路上往往會出現的一個重要節點。每個好架構師都是一位出色的程式設計師。然而好的程式設計師進階為架構師,並不容易。 對於有一定後臺研發經驗(尤其是5年以上經驗)的程式設計師們來說,

分享6個月java基礎+精簡資料(視訊+原始碼+就業專案+面試報裝)

  每天都有初學者詢問該如何學習,如何快速學習,因精力有限不能一一回復請見諒,現系統整理一套java初學者最佳的學習方法、路線、大綱及視訊資料,並對一些過期的知識點進行剔除!如Struts2,hibernate等舊框架!完全不需要在新手期進行學習,因為外面公司基本不再使用!希望

200道Java技術答疑,阿里技術專家幫你Java技術

雲棲社群邀請到6位Java技術專家幫開發者答疑解惑,其中精華的200道問答已經整理出來,供大家學習! 如有Java相關問題,請向專家提問https://yq.aliyun.com/promotion/755 spring相關問題 [@古散]用spring boot 寫後臺可以完全用kotlin代替Ja

Java入門學習資料和專案實戰資源

比較好的Java入門資源,逐個知識點選破 比較好的Java入門資源 連結 JAVA 自學網站 http://how2j.cn?p=48616 JAVA 練習題 http://how2j.

day26-爬蟲

5.程式碼書寫請求-全棧資料爬取 例子4:爬取所有頁面choutiAll--手動請求傳送形式start_urls = ['https://dig.chouti.com/r/pic/hot/1'] 解析抽屜圖片下所有的超鏈! #設計了一個所有頁碼通用的url(pageNum表示的就是不同頁碼)

網際網路 Java 工程師知識完全掃盲

小編經過一個多月的努力,給大家總結了一份面試方面的題目。這份面試題涉及高併發、分散式、高可用相關知識點,在此分享給大家,希望大家能拿到一份理想的 Offer!因為是筆試題目,大家可以先做。答案在後面。 高併發架構 訊息佇列 為什麼使用訊息佇列?訊息佇列有什麼優點和缺點?Kafka、ActiveMQ

程式設計師Java程式設計的5個注意點,別程式設計兩三年還是增刪改查!

對於一個進軍程式設計界的兩三年的Java程式設計師來說,工作如果還只是增刪改查,這可是相當痛苦的。 有這種情況的程式設計師,有不少是在外包公司,每天就期待下班,簡直就是做一天和尚撞一天鐘。 為了打破這種僵局,Java程式設計師在這個迷茫的階段應做什麼呢? 下面我將為程式設計師小夥伴們分享