40行代码的Python爬虫案例:虎牙-王者荣耀主播的人气排行
2020-03-01 03:50
666 查看
40行代码的Python爬虫案例:虎牙-王者荣耀主播的人气排行
爬虫:对网页(HTML文件)进行文本分析,提取所需要的数据,通常使用正则表达式来处理数据.
运行结果:
1.明确爬虫目的:从虎牙直播平台爬取各个王者荣耀主播的人气数,并按照排名显示各个主播的名字,观看人数和主播间名字. 2.找到数据对应的网页,并分析网页的结构找到数据所在的标签,抓取数据源码:
import re # 引入正则表达式的re模块 from urllib import request # 引入网络访问模块urllib的request对象 data = '<li class="game-live-item" gid="2336">[\s\S]*?</span>\s*</span>' # 爬取主播数据:把每个主播的名字、热度、直播间标题作为一组数据进行爬取 name_data = '<i class="nick" title="([\s\S]*?)">' # 主播名字 #()的作用:不显示小括号外相同的标签 number_data = '<i class="js-num">([\s\S]*?)</i>'# 主播热度,即观看人数 title_data = 'target="_blank">([\s\S]*?)</a>' # 直播间标题 #用到的正则表达式#*:零次或多次#?:非贪婪匹配#\s:空白字符#\S:非空白字符 def fetch_content(): #定义一个抓取函数fetch_content(),返回html文件 htmls = str(request.urlopen('https://www.huya.com/g/2336').read(), encoding='utf-8') #用urlopen方法接收url# read方法读取文件 #设置编码格式utf8,防止中文出现乱码 return htmls def analysis(htmls): #定义函数analysis(),分析html文件 list_data = [] #定义一个空列表[] for html in re.findall(data, htmls): name = re.findall(name_data,html) number = re.findall(number_data,html) title = re.findall(title_data, html) dict_data = {'name':name,'number':number,'title':title } # 把结果拼接存入字典{} list_data.append(dict_data) #把字典数据放入列表 return list_data # 返回处理过的列表 def format(list_data): #规范数据格式 data2 = lambda dict_data:{ 'name':dict_data['name'][0].strip(), 'number':dict_data['number'][0], 'title':dict_data['title'][0]} return map(data2,list_data)#使用map()函数做映射 def sort(list_data): #定义排序函数sort(),进行数据处理 list_data = sorted(list_data, key=sort_key,reverse=True) #使用python内置排序函数sorted()完成,reverse=True降序排列 return list_data def sort_key(dict_data): #处理观看人数数据 r = re.findall('\d*',dict_data['number']) #提取数字 number = float(r[0]) #转换为浮点型 if '万' in dict_data['number']: #去除"万"字 number *= 10000 return number def show(list_data): #输出排序后的函数 print('虎牙-王者荣耀-主播人气排行:') print('排名 主播 人气 直播间名称') for rank in range(0,len(list_data)): print('排名-' + str(rank + 1) + ': ' + list_data[rank]['name'] + ' ' + list_data[rank]['number'] + ' ' + list_data[rank]['title']) print(show(sort(list(format(analysis(fetch_content()))))))
- 点赞 1
- 收藏
- 分享
- 文章举报
相关文章推荐
- python用字符串操作20行代码简单爬虫入门+案例(爬取一章《三体》小说)
- python_爬虫大学排行的代码
- 30行Python代码刷王者荣耀金币
- 王者荣耀——bat批处理文件,自动刷金币版(脱胎于30行Python代码刷金币版),Windows双击即可运行!
- Python采集案例:Python实现爬取知乎神回复简单爬虫代码
- Python爬虫之40行代码爬取金庸所有武侠小说
- Python--Python抓取花椒网人气主播全教程(附:代码)
- Python爬虫Scrapy(二)_入门案例
- Python+tkinter使用40行代码实现计算器功能
- Python爬虫框架Scrapy实例代码
- Python编写网页爬虫爬取oj上的代码信息
- python&php数据抓取、爬虫分析与中介,有网址案例
- Python新手写出漂亮的爬虫代码2——从json获取信息
- Python爬虫――爬取豆瓣电影Top250代码实例
- python简单网页爬虫代码
- 改进的Python贴吧爬虫代码
- 23个Python爬虫开源项目代码
- python爬虫:案例四:新浪微指数(未完全解决
- Python新手写出漂亮的爬虫代码1——从html获取信息
- python伪代码之爬取全国高校专业人气榜运行代码持续更新:【内向即失败--王奕君】