运用爬虫快速知道关注的主播现在是否在直播

    技术2022-07-14  91

    前言

    需要用到自己成功登陆直播平台的请求头中的cookie信息

    找寻cookie

    以虎牙直播为例 首先进入我的订阅,如下图所示

    点击重新载入

    在左侧找到myfollow,然后点击,接着目光看向右边的区域 鼠标滚轮往下滑动,找到一个Request Headers 接下来看下图中蓝色框框圈起来的东西 cookie就找到了

    把cookie: 后面的数据全部复制,如下图红圈

    代码

    import requests from lxml import etree zb_list = [] # 直播的主播列表 cb_list = [] # 重播的主播列表 wzb_list = [] # 未直播的主播列表 # cookie会过期 cookie = "udb_guiddata=6a99bc0ceb8840baad80cbf2f59d0a4b; __yamid_tt1=0.3736634236973828; __yamid_new=C8D5451D79800001A319F2409086101A; guid=0ad6ad3bea91715e3c0504c805c88eed; sdid=; udb_origin=101; udb_other={"lt":"1587805921226","isRem":"1"}; udb_passport=newqq_5so4unrjo; udb_status=1; udb_uid=1481235168; udb_version=1.0; username=newqq_5so4unrjo; yyuid=1481235168; alphaValue=0.47; videoLine=3; isInLiveRoom=true; videoBitRate=4000; hiido_ui=0.24744194614862858; SoundValue=0.71; PHPSESSID=taag20o4k53qelcnjkc9qfuhi2; Hm_lvt_51700b6c722f5bb4cf39906a596ea41f=1593258570,1593319780,1593329765,1593330239; h_unt=1593330500; __yasmid=0.3736634236973828; __yaoldyyuid=1481235168; _yasids=__rootsid=C8F6294E5ED000019DE1FDD01F808250; udb_passdata=3; udb_biztoken=AQBTmlzal-Mg4B6F_gYABWdkxXZLHsKZa--4N-V9oSoAPqiEa_0qb3EhEmsC6qhRB2bFfA7fVbcsvVaCgqg5P1VjPmdX1hMSGmwiX03wkQuV1bizwsqz-aU6JKImbYs8dw5eniBbLk4MB3isCfCB4JrhnIV06dp3dvhgCIemj_y3-MHgCcvEmRen-LSaNSZLboyHoaQMDR8BwRpvzsv0_6JwqNGVt_q8OYL_NOnmxgA4CMhAkg-A--DN9YVJYNYjZj-Y7zhVOyeKFn3oDrCc7c2KCHgihqy5rNR75qbqkTD11EhKTOqF1h7bd0g6S2G0TtEz4cPaTpxs7tOfehqH0vp-; Hm_lpvt_51700b6c722f5bb4cf39906a596ea41f=1593330252; huya_web_rep_cnt=17" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36", "Cookie": cookie, } url = "https://www.huya.com/myfollow" resp = requests.get(url, headers=headers) html = etree.HTML(resp.text) li_list = html.xpath('//ul[@class="live-list"]/li') for li in li_list: name = "".join(li.xpath('./a/img/@title'))[:-3] is_in = "".join(li.xpath('./a/span/text()')) if is_in == "直播中": zb_list.append(name) elif is_in == "重播中": cb_list.append(name) else: wzb_list.append(name) if __name__ == '__main__': print("------------直播中------------") for i in zb_list: print(i, end="\t") print() print() print("------------重播中------------") for i in cb_list: print(i, end="\t") print() print() print("------------未直播------------") for i in wzb_list: print(i, end="\t")

    运行结果

    Processed: 0.016, SQL: 9