"""
爬虫前奏:
爬取熊猫tv各个主播的名字和人气值
明确目的
找到数据对应的网页
分析网页的结构找到数据所在的标签位置
模拟HTTP请求,向服务器发送这个请求,获取到服务器返回给我们的HTML
用正则表达式提取我们要的数据(比如主播名字,人气)
"""
import re
from time import sleep
from urllib import request
class Spider():
url = 'http://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
def __refine(self, anchors):
'''
lambda匿名函数, anchor为匿名函数的参数
{}内是匿名函数的内容
函数实现列表内容转化为单一的字符串
'''
l = lambda anchor: {
'name': anchor['name'][0].strip(),
'number': anchor['number'][0]
}
'''
map()函数将l方法遍历添加到anchors中
'''
return map(l, anchors)
def __sort(self, anchors):
anchors = sorted(anchors, key=self.__sort_seed, reverse=True)
return 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 __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)
spider = Spider()
while True:
spider.go()
sleep(5)
rank 1 : 贾克虎丶虎神 129.9万
rank 2 : 君克解说 35.8万
rank 3 : LOL丶摇摆哥 20.3万
rank 4 : Riot国际赛事直播间 6.4万
rank 5 : 熊猫Tv丶狮子汪 4.9万
rank 6 : 左手QAQ 4.1万
rank 7 : 熊丶猫TV小新 3.3万
rank 8 : LPL熊猫官方直播 2.9万
rank 9 : 抗寒使者 2.4万
rank 10 : 温州丶黄小明 2.3万
rank 11 : 空大的劫zz 1.8万
rank 12 : 御天文哥丶 1.2万
rank 13 : 暴君aa 1.2万
rank 14 : 顺顺套路王 1.0万
rank 15 : 请叫我大腿岩丶 7156
rank 16 : 破晓Abner 6891
rank 17 : 上单教官李某人 5124
rank 18 : 童哥一v一 5031
rank 19 : 走A龙龟 4915
rank 20 : 熊猫TV丶小志诺手 4792
rank 21 : 一个很C的稻草人 4577
rank 22 : 牛老师丶 4552
rank 23 : 韦国君 3810
rank 24 : 贼可爱的小亮亮 3342
rank 25 : 熊猫LCS直播间 2811
rank 26 : 这个赵信有丶C 2691
rank 27 : 迷心哥哥 2627
rank 28 : 冰雪丶狐狸 2573
rank 29 : 黑秧 2558
rank 30 : 琳琪baby 2429
rank 31 : 言希cc 2384
rank 32 : 幸福哥儿 2221
rank 33 : 0不懂wAAAAA 2166
rank 34 : 七哥卡牌丶 2086
rank 35 : 你的小老虎i 2024
rank 36 : Panda丶冰冰 2010
rank 37 : 传海老大 1894
rank 38 : 我爱吃烤鸭丶 1883
rank 39 : 瓜神z 1853
rank 40 : 魔剑神无敌 1832
rank 41 : 我的傻喵 1816
rank 42 : 小羊啊丶 1800
rank 43 : 梁老师的作死大头 1798
rank 44 : 叶芯丶 1774
rank 45 : 江西丶社会强 1766
rank 46 : 峡谷第三伊芙琳 1714
rank 47 : 小小de期待 1692
rank 48 : SevenOwO 1684
rank 49 : 伽耳伽耳 1680
rank 50 : fuckink 1632
rank 51 : 沫兮cc 1626
rank 52 : 尼丿玛 1556
rank 53 : 大洋洋y 1551
rank 54 : 师天然 1477
rank 55 : 吃藕人的小丑 1446
rank 56 : 啦啦Lara丶 1441
rank 57 : 南京欧阳浪 1440
rank 58 : 自闭症晚期患者z 1425
rank 59 : 小白菜嗷呜 1411
rank 60 : 时间刺客浅浅 1404
rank 61 : 熊猫TV丶萌阿琦i 1393
rank 62 : 乡下帅小伙 1383
rank 63 : RS小强 1363
rank 64 : Panda丶浅唱小生 1350
rank 65 : 紫疯丶 1336
rank 66 : 超辣ouo 1331
rank 67 : 雁回阿 1327
rank 68 : 机器猫mmm 1298
rank 69 : 一只小果酱儿 1284
rank 70 : 七天灿灿 1200
rank 71 : 冷面寒枪人马神 1196
rank 72 : 请叫我越塔怪 1140
rank 73 : lol官方赛事英文台 1135
rank 74 : 我是你筒哥 1135
rank 75 : 李砖一丶 1122
rank 76 : 陈小贱丶丶丶 1100
rank 77 : AhDai丶 1043
rank 78 : 凶猛的14哥哥 1039
rank 79 : 学不乖的吉木人 1034
rank 80 : 丨熊猫丨野马 1031
rank 81 : panda丶tv峰丶峰 1024
rank 82 : 把手放在空中甩丶 1005
rank 83 : 文希宝宝 972
rank 84 : 疯哥哥 971
rank 85 : 丿梦灬十年 912
rank 86 : 冰女人丶 897
rank 87 : 啊斗斗斗 896
rank 88 : 酸甜不辣小仙嘉 879
rank 89 : 627091丶柠檬 847
rank 90 : 北鼻盖伊 828
rank 91 : 步子丶 826
rank 92 : 白竹ing 779
rank 93 : 艾特Shen 778
rank 94 : 熊猫TV猪小伟 773
rank 95 : 居居豹子 773
rank 96 : panda丶雄鹰 755
rank 97 : Dpo3 748
rank 98 : 我来教你玩剑姬 741
rank 99 : 筱海男枪丶 740
rank 100 : Panda丶小财神 737
rank 101 : 暖攻音的拾命 737
rank 102 : 七区逗比凌 728
rank 103 : 朱四世 725
rank 104 : tayoto 717
rank 105 : 七凢 717
rank 106 : 你微笑时很美丶zy 715
rank 107 : 熊猫小刘同学 714
rank 108 : 亦然ovo 707
rank 109 : 我有高贱需要发表 707
rank 110 : 新人凌小铄 705
rank 111 : 喜欢馒头丶 701
rank 112 : 恍如夢镜 700
rank 113 : 我怀念的san 697
rank 114 : 丶莫茕 691
rank 115 : 蔓妍得旺仔小馒头 690
rank 116 : 熊猫2086761武神 687
rank 117 : 就叫我阿神把 686