日韩性视频-久久久蜜桃-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数据获取所有直播情况的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 视频在线a | 99视频网 | 天天操天天干天天爽 | 国产精品入口麻豆九色 | 亚洲av永久中文无码精品综合 | 日韩免费中文字幕 | 一卡二卡三卡四卡五卡 | 美女网站免费视频 | 成人免费一级视频 | 校园伸入裙底揉捏1v1h | 亚洲麻豆av| 午夜影院免费视频 | 久久久久久一级片 | 激情影院内射美女 | 久久久久少妇 | 一级片免费播放 | 亚洲精品999 | 青青草在线免费视频 | 久草视频精品在线 | 国产成人自拍网站 | 成都免费高清电影 | 亚洲欧美视频一区 | 手机在线观看av片 | 欧美精品久久久久久久多人混战 | 日韩综合在线视频 | 国产精品人人妻人人爽人人牛 | 美女看片 | 中文字幕免费高清在线观看 | av福利影院 | 中文字字幕在线 | 精品人妻一区二区三区久久 | 91精品美女 | 精品一区二区三区四区五区六区 | 亚洲视频在线观看一区二区三区 | 欧美极品少妇xxxxⅹ猛交 | 污视频免费看 | 亚洲日本欧美精品 | 国产91在线播放九色 | 91在线观看成人 | 国产伦一区二区三区 | 欧美mv日韩mv国产网站app | 伊人资源 | 三年中文在线观看中文版 | 懂色av色吟av夜夜嗨 | 美女在线免费视频 | av字幕在线 | 成人国产在线观看 | 中文字幕日韩欧美 | www.av在线播放 | www狠狠干 | 91日韩在线 | 麻豆精品网站 | 精品人妻久久久久一区二区三区 | 特级毛片av | www.一区二区 | 成人免费a级片 | 无套内谢少妇毛片 | 黄色av日韩 | 激情九月婷婷 | 国产精品久久久爽爽爽麻豆色哟哟 | 性生活网址 | 被各种性器调教到哭vk | 成年人网站免费在线观看 | 日韩不卡av | 69人妻精品久久无人专区 | 国产在线成人精品午夜 | 天天曰天天操 | 九九视频精品在线 | 天天做天天爽 | 欧美精品极品 | 中文字字幕码一二三区 | 亚洲国产爱 | 欧美一区二区三区成人 | 一二三四区视频 | 精品国产鲁一鲁一区二区三区 | 日日操夜夜爽 | 亚洲人成电影在线 | 老司机精品视频网站 | 久久911 | 国内外成人在线视频 | 免费av观看网站 | 国产精品高潮AV无码 | 欧美黑人xxx | 午夜精品成人毛片非洲 | av天天网| 亚洲熟女乱综合一区二区三区 | 国产免费999 | 亚洲毛片一级 | 国产精品久久久久久久久免费相片 | 九九精品在线观看 | 免费看片网站91 | 中文字幕人妻精品一区 | 四虎影院污 | 国产精品人妻一区二区三区 | japanese24hdxxxx日韩 | 日韩黄色一级视频 | 秋霞福利视频 | 色妞网 | 午夜av免费看 |