日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

爬取虎牙之三:通过json数据获取所有直播情况

發布時間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬取虎牙之三:通过json数据获取所有直播情况 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

動態ajax頁面為什么會再同一個頁面有多個分頁,就是因為當你點擊其他頁的時候服務器返回一串json串,js執行json參數達到改變頁面效果。下面說說如何抓取json串。
1:爬取信息要對源頁有所了解,首先打開虎牙直播,谷歌F12選取network。點xhr。里面可能會有多個json文件,點擊第三頁。

發現點擊第三頁后會出現一個新的json串。點擊看下

會發現服務器返回的數據就是這個頁面所顯示的。你想要的數據都在里面。可以通過這個數據爬取有用的信息。查看服務器的請求

最下面一行的Query String Parameters就是需要的請求,這樣我們模擬請求就可以獲取信息。

import java.io.IOException; import java.util.HashMap; import java.util.Map;import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document;public class test2 {public static void main(String[] args) throws IOException{String url="https://www.huya.com/";Connection connect = Jsoup.connect(url).timeout(20000);Map header = new HashMap(); header.put("m", "LiveList");header.put("do", "getLiveListByPage");header.put("tagAll", "0"); header.put("page", "3"); connect.data(header);Document doc=connect.get();System.out.println(doc.text());} }

卻發現輸出的是

這個就是前面xhr中的response文件。并且這是一個json串,要想轉換json變成我們想要的東西。就要使用阿里的fastjson解析工具,導入fastjson包就可以使用。對于fastjson的簡單使用,可以先簡單對單個數據摸索。嘗試看看。就可以獲得想要的數據。json串的解析和獲取信息需要自己慢慢摸索。貼上最終的代碼:

package 虎牙斗魚直播平臺;import java.io.IOException; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashMap; import java.util.Map;import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements;import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject;/** 直接抓所有直播*/ public class 抓取所有主播 {public static void main(String[] args) throws IOException, SQLException, ClassNotFoundException {int id = 1;/** 連接數據庫*/java.sql.Connection con;Class.forName("com.mysql.jdbc.Driver");System.out.println("數據庫驅動加載成功");con = DriverManager.getConnection("jdbc:mysql:" + "//127.0.0.1:3306/db?useSSL=true", "root", "123456");System.out.println("數據庫連接成功");/** 模擬請求 注意,請求的頁面不同*/String url = "https://www.huya.com/";Connection connect = Jsoup.connect(url).timeout(20000);Map<String, String> header = new HashMap<String, String>();header.put("m", "LiveList");header.put("do", "getLiveListByPage");header.put("tagAll", "0");int page = 0;// 頁數// 獲取頁面數操作 首先要用jsoup解析當前頁面,看看有多少頁,Document exam = Jsoup.connect("https://www.huya.com/l").get();// 請求鏈接所有直播Elements links = exam.getElementsByClass("list-page");// 可以遍歷到人數和主播昵稱page = Integer.parseInt(links.attr("data-pages"));System.out.println(page);for (int i = 0; i < page; i++) {header.put("page", 1 + i + "");Connection data = connect.data(header);Document doc = data.get(); // 獲取json字符串// System.out.println(doc.text());try {JSONObject jsonObj = JSON.parseObject(doc.text()); // 將json字符串轉成中文 獲得主要的json串// System.out.println(jsonObj);JSONObject jsonOb = JSON.parseObject(jsonObj.getString("data"));// 獲取data選項的json內容// System.out.println(jsonOb);JSONArray jarr = jsonOb.getJSONArray("datas");// 獲取datas內容的jsonarray可以看作是多組jsonobjiect組成for (Object jar : jarr) {JSONObject js = JSON.parseObject(jar.toString());// 獲取更具體的json值/** 寫入數據庫*/int renshu = Integer.parseInt((String) js.get("totalCount"));String type = js.get("gameFullName").toString();String sql2 = "insert into satuday(name,href,number,type)value(?,?,?,?)";// 插入mysql姓名 鏈接 觀看人數 分類PreparedStatement pstmt = con.prepareStatement(sql2);pstmt.setString(1, (String) js.get("nick")); // 可以查看json數據preview里面的選項做參考pstmt.setString(2, "https://www.huya.com/" + js.get("profileRoom"));pstmt.setInt(3, renshu);pstmt.setString(4, type);pstmt.execute();System.out.println(js.get("gameFullName") + "" + id++ + " " + i + "");}} catch (Exception e) {System.out.println(e.getMessage());}}con.close();} }
  • 如果對爬蟲,數據結構,java感興趣可以關注筆者公眾號:bigsai

總結

以上是生活随笔為你收集整理的爬取虎牙之三:通过json数据获取所有直播情况的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲一区二区自拍偷拍 | 日本韩国视频 | 精品九九视频 | 懂色av蜜臀av粉嫩av喷吹 | 污污的网站在线免费观看 | 国产乱淫av麻豆国产免费 | 91精品系列 | 国产麻豆一区二区三区 | 欧美日韩高清一区二区 国产亚洲免费看 | 91精东传媒理伦片在线观看 | 奇米成人 | 少妇极品熟妇人妻无码 | xvideos成人免费视频 | 69日影院| 欧美一区高清 | 国产福利一区二区 | av资源网在线 | 亚洲做受高潮无遮挡 | 国产又黄又大又爽 | 国产乱码精品一区二区三区忘忧草 | 色亚洲天堂 | 一区二区三区免费看 | 国内偷拍第一页 | 99热免费观看 | 粉嫩精品久久99综合一区 | 国产鲁鲁视频在线观看特色 | 欧美极品少妇xxxxⅹ喷水 | 国产理论一区 | 日韩黄色网 | 在线看黄色av | а√天堂8资源中文在线 | 中文字幕亚洲乱码熟女1区2区 | 久久韩日 | 国产一区视频免费观看 | 亚洲精选91| 强行无套内谢大学生初次 | 久久国产精品久久国产精品 | 亚洲天堂男人网 | 动漫av一区二区 | 潮见百合子 | 欧洲xxxxx | 少妇真实被内射视频三四区 | 新91在线| 亚洲一区美女 | av网站免费大全 | 久久这里只精品 | 欧美色噜噜| 开心激情综合网 | 天海翼中文字幕 | 日日夜夜精品免费视频 | 在线观看视频你懂得 | 国产91黄色 | 久热国产精品视频 | 毛茸茸free性熟hd | 欧美91看片特黄aaaa | 99久久久国产精品无码免费 | 日本免费精品 | 中文字幕色哟哟 | www.色日本 | 欧美日本在线视频 | 蜜臀av午夜精品 | 二区三区在线视频 | 又色又爽又高潮免费视频国产 | 日本xxxxwww | 亚洲欧美日韩专区 | 国产成年妇视频 | yy6080久久| 成在线人免费视频 | 日本老妇高潮乱hd | 99精品人妻国产毛片 | 国产精品视频大全 | 男女猛烈无遮挡免费视频 | 亚洲精品动漫在线观看 | 日本久草视频 | 99一级片| 舐め犯し波多野结衣在线观看 | 久久久久久99精品久久久 | 亚洲字幕av一区二区三区四区 | 久久精品5 | 亚洲一区国产一区 | 国产高清视频免费在线观看 | 亚洲日本精品一区 | 精品1区2区 | av中文字幕av| 黄色在线免费观看视频 | 日本三级久久 | 亚洲欧美国产精品 | 天天干天天弄 | 九九久久久| 国产av无码专区亚洲a∨毛片 | 国产一级淫片a视频免费观看 | 久久精品99国产国产精 | 亚洲国产精品无码久久久 | 99re免费视频精品全部 | 一级二级在线观看 | 91精品国产综合久久香蕉922 | 午夜吃瓜| 日韩在线视频在线观看 | 先锋av资源在线 |