欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java爬蟲Jsoup+httpclient獲取動態(tài)生成的數(shù)據(jù)

 更新時間:2017年05月11日 10:15:59   投稿:lqh  
這篇文章主要介紹了Java爬蟲Jsoup+httpclient獲取動態(tài)生成的數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下

Java爬蟲Jsoup+httpclient獲取動態(tài)生成的數(shù)據(jù)

前面我們詳細講了一下Jsoup發(fā)現(xiàn)這玩意其實也就那樣,只要是可以訪問到的靜態(tài)資源頁面都可以直接用他來獲取你所需要的數(shù)據(jù),詳情情跳轉(zhuǎn)-Jsoup爬蟲詳解,但是很多時候網(wǎng)站為了防止數(shù)據(jù)被惡意爬取做了很多遮掩,比如說加密啊動態(tài)加載啊,這無形中給我們寫的爬蟲程序造成了很大的困擾,那么我們?nèi)绾蝸硗黄七@個梗獲取我們急需的數(shù)據(jù)呢,

下面我們來詳細講解一下如何獲取

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();

這時其實已經(jīng)獲取到了整個頁面的數(shù)據(jù),但是商品價格是通過回調(diào)函數(shù)獲取后再填充上去的,所以這就要求我們寫爬蟲的開發(fā)者要很有耐心的去尋找價格數(shù)據(jù)的回調(diào)接口,我們直接訪問這個接口就可以直接獲取這個價格,下面是演示:

這里寫圖片描述

通過這張截圖可以看到他傳過來的只是一個靜態(tài)資源頁面根本沒有價格參數(shù),那么價格怎么來的呢,繼續(xù)找發(fā)現(xiàn)這個接口:

這里寫圖片描述

這里寫圖片描述

你會發(fā)現(xiàn)在這個接口是很多參數(shù)拼接上去的,那么我們要做的就是分析是不是所有的參數(shù)都有用

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

可以試著刪除一些參數(shù)發(fā)現(xiàn)最終這個接口需要的參數(shù)其實很簡單:

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

看到這里是不是很激動了,你其實可以換一些其他的JD商品ID一樣能獲取到當前價格和最高價格已經(jīng)那什么價格我也不清楚,我們需要做的只是寫一個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);

結(jié)果是這樣:

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

至于后面的你直接解析下JSON字符串那么你要的數(shù)據(jù)就GET到了。

注意一下

這是對回調(diào)請求到的數(shù)據(jù)進行的再請求獲取,這只是對前面動態(tài)獲取商品價格的一個補充,這種情況是價格本身通過主鏈接沒有帶到頁面上而是加載過程中異步請求填充的,還有的時候是數(shù)據(jù)帶過來了但是有相關(guān)的JS進行了相關(guān)處理我們還是獲取不到,這個時候我們就得通過其他手段來獲取這個數(shù)據(jù),后面會講解

將這些Jsoup和httpclient整合成一個爬蟲模板完全可以完成你一些基本的爬取數(shù)據(jù)的操作,至于怎么整合就看個人喜好了。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Java設計模式中的命令模式

    Java設計模式中的命令模式

    在軟件設計中,我們經(jīng)常需要向某些對象發(fā)送請求,但是并不知道請求的接收者是誰,也不知道被請求的操作是哪個,我們只需在程序運行時指定具體的請求接收者即可,此時可以使用命令模式來進行設計
    2022-11-11
  • Springboot?JPA如何使用distinct返回對象

    Springboot?JPA如何使用distinct返回對象

    這篇文章主要介紹了Springboot?JPA如何使用distinct返回對象,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java Spring框架的概述

    Java Spring框架的概述

    這篇文章主要為大家介紹了Java Spring框架,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Java動態(tài)數(shù)組Arraylist存放自定義數(shù)據(jù)類型方式

    Java動態(tài)數(shù)組Arraylist存放自定義數(shù)據(jù)類型方式

    這篇文章主要介紹了Java動態(tài)數(shù)組Arraylist存放自定義數(shù)據(jù)類型方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Spring實現(xiàn)處理跨域請求代碼詳解

    Spring實現(xiàn)處理跨域請求代碼詳解

    這篇文章主要介紹了Spring實現(xiàn)處理跨域請求代碼詳解,具有一定借鑒價值,需要的朋友可以了解下。
    2017-12-12
  • java中struts 框架的實現(xiàn)

    java中struts 框架的實現(xiàn)

    本文給大家介紹的是java中struts 框架的實現(xiàn),有需要的小伙伴可以參考下。
    2015-06-06
  • 利用Spring?boot+LogBack+MDC實現(xiàn)鏈路追蹤

    利用Spring?boot+LogBack+MDC實現(xiàn)鏈路追蹤

    這篇文章主要介紹了利用Spring?boot+LogBack+MDC實現(xiàn)鏈路追蹤,MDC?可以看成是一個與當前線程綁定的哈希表,可以往其中添加鍵值對,下文詳細介紹需要的小伙伴可以參考一下
    2022-04-04
  • Java 解析線程的幾種狀態(tài)詳解

    Java 解析線程的幾種狀態(tài)詳解

    這篇文章主要為大家詳細介紹了Java 解析線程的幾種狀態(tài),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • SpringBoot?Bean實例化流程解析

    SpringBoot?Bean實例化流程解析

    在SpringBoot啟動過程中會執(zhí)行refreshContext()方法,而在其執(zhí)行過程中,又會調(diào)用finishBeanFactoryInitialization()方法,該方法負責了Bean的實例化,那么本文將從源碼跟讀的角度來解析一下具體流程
    2023-08-08
  • springcloud pom.xml完整配置詳解

    springcloud pom.xml完整配置詳解

    這篇文章主要介紹了springcloud pom.xml完整配置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12

最新評論