• (Python学习)爬取虎牙直播网站——主播名字和人气


    获得不同类型游戏直播间的主播名字和人气,只需要修改url的最后面地址,下面加粗黑色字体。
    https://www.huya.com/g/wzry

    """
    爬取虎牙直播不同游戏类型的主播及人气(仅学习使用)
    """
    import re
    from urllib import request
    
    class Spider:
        #对应虎牙游戏直播间ip地址
        url = 'https://www.huya.com/g/wzry'
    
        #正则表达式
        root_pattern = '([\s\S]*?)([\s\S]*?)'
        name_pattern = '([\s\S]*?)'
        number_pattern = '([\s\S]*?)'
    
        #爬取整个HTML
        def __fetch_content(self):
            r = request.urlopen(Spider.url)
    
            htmls = r.read()
            htmls = str(htmls, encoding='utf-8')
    
            return htmls
    
        #提取html中的信息
        def __analysis(self, htmls):
            htmls = re.findall(Spider.root_pattern, htmls)
    
            anchors = []
            for x in htmls:
                name = re.findall(Spider.name_pattern, str(x))
                number = re.findall(Spider.number_pattern, str(x))
                anchors.append({'name':name[0], 'number':number})
            return anchors
    
        #对提取的html信息进行过滤
        def __refine(self, htmls):
            l = lambda x : {'name':x['name'][0].strip(), 'number':x['number'][0].strip()}
            r = map(l, htmls)
            return list(r)
    
        #排序
        def __sort(self, htmls):
            htmls = sorted(htmls, key=self.__sort_seed, reverse=True)
            return htmls
    
        #排序的key设定
        def __sort_seed(self, htmls):
            r = re.findall('\d*',htmls['number'])
            number = float(r[0])*10000 + float(r[2])*1000
            return number
    
        #展示信息
        def __show(self, htmls):
            for rank in range(0, len(htmls)):
                print("rank:"+str(rank)+" name:"+htmls[rank]['name']+"------"+htmls[rank]['number'])
    
        #main函数
        def go(self):
            htmls = self.__fetch_content()
            htmls = self.__analysis(htmls)
            htmls = self.__refine(htmls)
            htmls = self.__sort(htmls)
            self.__show(htmls)
    
    spider = Spider()
    spider.go()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67

    效果如下:
    在这里插入图片描述

  • 相关阅读:
    【C++】Linux下如何查看opencv的版本
    Windows上安装jdk17后没有jre的解决方法
    了解web3,什么是web3
    新手答疑解惑,Ajax 到底是啥,新手必看
    SpringBoot整合Activiti7——流程变量(五)
    Day02-数据绑定
    Docker安装MySQL8.0报错记录
    精力,而非时间是高效表现的基础
    Cookie的使用(基于js-cookie插件)
    VMwarePlayer安装Ubuntu,切换中文并安装中文输入法
  • 原文地址:https://blog.csdn.net/weixin_43667611/article/details/133266563