admin 管理员组

文章数量: 893559

爬取斗鱼房间号信息

早就对斗鱼等直播平台的观看人数好奇,今天进来爬取以下斗鱼到底有多少人观看,目前是新冠状病毒时期,看直播的人数应该不会太少,也希望各位保护好自己和自己的家人,祝身体健康。话不多说直接上过程:

第一步构想 使用xpath获取信息

打开谷歌,进入到斗鱼TV的直播页面

F12 调处谷歌检查窗口,右击页面查看网页源代码,搜索页面中的关键字,如搜索,脑力直播间(图片没显示全),结果如下:

代表是可以通过xpath进行提取数据的。

这里我们使用第二种方式进行爬取,抓包

点击NetWork窗口,进行抓包,当我们选择第二页时,发现数据包

抓取到请求:

发现正好是我们需要用到的数据,请求如下

那么第一页的数据是不是将后面的2改成1就行了啊,意境尝试,果然如此,如此一来就简单了。下面直接贴出我所有代码,供大家参考。如对xpath提取有兴趣可留言,我到时候再进行补充。

from pprint import pprintimport requests
import jsonimport time
from openpyxl import Workbook# 要求 保存每个直播间的房间号 标题  直播类别 主播  观看人数等信息至Excel表格 最后打印出 在斗鱼直播中  在线观看总人数class DouYuInfo():ol_person = 0 # 在线观看人数page = 1 # 当前页def __init__(self):self.wb = Workbook()self.ws = self.wb.activeself.ws["A1"] = "主播"self.ws["B1"] = "标题"self.ws["C1"] = "房间号"self.ws["D1"] = "直播类别"self.ws["E1"] = "观看人数"self.ws["F1"] = "观看链接"self.ws["G1"] = "主播头像"self.headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36'}self.douyu_url = "/{}"def get_response(self):"""获取响应"""res = requests.get(self.douyu_url.format(DouYuInfo.page), headers=self.headers)if res.status_code == 200:content = res.content.decode()return contentelse:print("数据已经请求完毕")returndef get_room_list(self,content):"""获取房间号信息"""data = json.loads(content)room_list = data["data"]["rl"]return room_listdef save_msg(self,room_list):for room in room_list:print("正在保存信息:")pprint(room)self.ws.append([room["nn"], room["rn"], room["rid"], room["c2name"], room["ol"], "" + room["url"],room["rs16"][:-4:]])DouYuInfo.ol_person += int(room["ol"])def run_rever(self):while True:con = self.get_response()room_list = self.get_room_list(con)self.save_msg(room_list)DouYuInfo.page += 1print("总人数:%s" % DouYuInfo.ol_person)self.wb.save("斗鱼直播信息.xlsx")time.sleep(1)def __del__(self):print("总人数:%s"%DouYuInfo.ol_person)self.wb.save("斗鱼直播信息.xlsx")if __name__ == '__main__':douyu = DouYuInfo()douyu.run_rever()

最后数据我没有爬取完,因为到后面一些小主播基本没人看,人数基本没啥增加,总结果为:

总共只爬取了一万多条信息:

本文标签: 爬取斗鱼房间号信息