python 爬取 某平台 LOL主播姓名+加人气,然后进行排序

import re
from urllib import request

class Spider():
#<div class="video-info">主播姓名+观看人数</div>
#<span class="video-nickname" title="">主播姓名</span>
#<span class="video-number">1704</span>
url = 'https://www.panda.tv/cate/lol'
root_pattern = '<div class="video-info">([\s\S]*?)</div>'
name_pattern = '</i>([\s\S]*?)</span>'
number_pattern = '<span class="video-number">([\s\S]*?)</span>'
#私有方法
def _fetch_content(self):
r = request.urlopen(Spider.url)
htmls = r.read()
htmls = str(htmls,encoding = 'utf-8')
return htmls
#实例方法
def _analysis(self,htmls):
root_html = re.findall(Spider.root_pattern,htmls)
anchors = []
for html in root_html:
name = re.findall(Spider.name_pattern,html)
number = re.findall(Spider.number_pattern,html)
anchor = { 'name':name, 'number':number}
anchors.append(anchor)
return anchors
a = 1
#私有方法数据精炼
def _refine(self,anchors):
l = lambda anchor:{
'name':anchor[ 'name'][ 0].strip(),
'number':anchor[ 'number'][ 0]
}
return map(l,anchors)

def _sort_seed(self,anchor):
#提取数字
r = re.findall( '\d*',anchor[ 'number'])
number = float(r[ 0])
if '万' in anchor[ 'number']:
number *= 10000
return number

#按人气排序
def _sort(self,anchors):
#filter
anchors = sorted(anchors,key =self._sort_seed,reverse = True)
return anchors

#展现数据
def _show(self,anchors):
for rank in range( 0, len(anchors)):
print( 'rank ' + str(rank + 1)
+ ' : ' + anchors[rank][ 'name']
+ ' ' + anchors[rank][ 'number'] + '人')

#入口,总控方法
def go(self):
htmls = self._fetch_content()
anchors = self._analysis(htmls)
anchors = list(self._refine(anchors))
anchors = self._sort(anchors)
self._show(anchors)
#实例化
spoder = Spider()
spoder.go()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jerry.qin

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值