python获取熊猫tv专区的人气数据

本文介绍了一个Python爬虫项目的实现过程,通过urllib和正则表达式从熊猫TV王者荣耀专区抓取主播信息及人气数据,并进行排序展示。文章详细展示了如何发送HTTP请求获取网页内容,解析HTML提取主播名字和在线人数,以及如何处理和排序这些数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# coding:utf-8
from urllib import request
import re


class Spider():
    url = 'https://www.panda.tv/cate/kingglory'   # 切换专区,修改成专区的URL就可
    root_pattern = '<div class="video-info">(.*?)</div>'  # 使用贪婪匹配会匹配到网页最后一个</div>
    name_pattern = '<span class="video-nickname" title="(.*?)">'
    number_pattern = '<span class="video-number">[\s\S]*?</i>([\s\S]*?)</span>'
    anchors = []

    # 获取网页内容
    def __get_content(self):
        r = request.urlopen(Spider.url)  # 发送http请求
        content = r.read()
        htmls = str(content,encoding='utf-8')
        return htmls

    # 处理抓取的内容
    def __handle_content(self, htmls):
        root_html = re.findall(Spider.root_pattern,htmls, re.S)  # re.S 使.匹配所有字符
        for html in root_html:
            name = re.findall(Spider.name_pattern, html)[0]
            number = re.findall(Spider.number_pattern, html)[0]
            anchor = {
                'name': name,
                'number': number
            }
            Spider.anchors.append(anchor)
        # print(Spider.anchors)

    # 按人气排序
    def sort(self, anchors):
        anchors = self.keey_seed(anchors)
        rank_list = sorted(anchors, key=lambda anchors : anchors['number'], reverse=True)
        return rank_list

    # 将人气转换成数值
    def keey_seed(self, anchors):
        i = 0
        for a in anchors:
            if '万' in a['number']:
                a['number'] = float(re.findall('\d*', a['number'])[0])*10000
            else:
                a['number'] = float(a['number'])
            anchors[i] = a
            i += 1
        return anchors

    def show(self,r):
        for a in r:
            print(a['name'],': ',a['number'])

    def run(self):
        contents = self.__get_content()
        self.__handle_content(contents)
        rank_list = self.sort(Spider.anchors)
        self.show(rank_list)


spider = Spider()
spider.run()

输出:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值