import re
from urllib import request
class Spider():
url = 'https://www.panda.tv/cate/lol'
#[\s\S]匹配任意字符
# [\s\S]*匹配任意多字符
# ?改贪婪模式为非贪婪模式(因为由于有许多</div>)改为匹配第一个
#加上括号变成组 结果只有()中的内容
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 __analusis(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)
#print(anchors[0])
return anchors
#数据排版
def __refine(self,anchors):
#strip() 去掉空白
l = lambda anchor:{'name':anchor['name'][0].strip(),'number':anchor['number'][0].strip()}
return map(l,anchors)
#排序
def __sort(self,anchors):
#key 指定那个元素为排序key ,reverse=True 改升序为降序
anchors = sorted(anchors,key=self.__sort_seed,reverse=True)
return anchors
#排序key
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(anchor['name']+'----------'+anchor['number'])
print(str(rank+1)+':'+anchors[rank]['name']+' '+anchors[rank]['number'])
def go(self):
htmls = self.__fetch_content()
anchors = self.__analusis(htmls)
anchors = list(self.__refine(anchors))
anchors = self.__sort(anchors)
self.__show(anchors) spilder = Spider()
spilder.go()

输出

1:贾克虎丶虎神    40.4万
2:熊猫LCS直播间 24.2万
3:MilkGod牛奶 12.7万
4:君克解说 11.8万
5:爷大干丶 10.7万
6:LOL丶摇摆哥 9.4万
7:LPL熊猫官方直播 9.4万
8:三毛丶德莱文 7.9万
9:小师弟180 5.9万
10:少聪丶灯红酒绿 3.4万
11:阿涛皎月Carry 3.4万
12:浩东德莱文 2.9万
13:熊猫Tv丶狮子汪 2.4万
14:南陵花神丶 2.3万
15:我叫GPS 2.2万
16:PSL英雄联盟 1.4万
17:空大的劫zz 1.9万
18:天才Reborn 1.5万
19:宇宙大表哥 1.2万
20:龙大大大大大根 9841
21:芒果鱼丶 8435
22:熊猫TV丶年华i 6076
23:牛老师丶 3981
24:熊猫TV丶八神梦魇 3495
25:上单教官李某人 3365
26:听白呀丶 2590
27:一个很C的稻草人 1969
28:熊猫TV丶达浪 1845
29:思思ob 1497
30:一剑西来QAQ 1470
31:魔剑神无敌 1447
32:不二锐雯阿 1379
33:小凯南zz 1250
34:阿枫丶丶丶 1020
35:冰雪丶狐狸 859
36:娱乐飞 859
37:顺顺套路王 742
38:许你一世长安可好 676
39:张张张小萌 665
40:Panda丶喜羊羊 651
41:Proc 620
42:壮的像个派大星 614
43:游戏主播十七 612
44:苏璞呀丶 610
45:小小小女人丶 588
46:Sye钰神 586
47:千夜_zilean 585
48:哲哲大魔王 575
49:东北小伙_ 572
50:俗了风7zcc 572
51:一只小欢欢丶 571
52:爱流血的兔斯基 560
53:阿尔托莉雅波塞冬 558
54:希希天使S 557
55:熊猫tv丶仙Q 557
56:小丸仔卡特 557
57:12345上山a老虎 555
58:叁少i丶 549
59:牌面之王丶火影劫 547
60:咪路m 546
61:熊猫tv胖胖虎 546
62:Panda丶冰冰 545
63:分手何必把锅背走 536
64:骠骑大将军1 534
65:小天社长 533
66:剑圣丶白无极 522
67:初柔_ 522
68:Panda丶浅唱小生 510
69:熊猫TV坦克王 507
70:迟到不准时的岛屿 496
71:柚子岩雀 491
72:八岁QAQ 490
73:熊猫TV_花和尚 485
74:杨洋洋洋i 482
75:小伊Zzz 480
76:熊猫丶杀手小哼 480
77:红尘安静 480
78:兮颜木木 480
79:黄金单身汉丶 469
80:熊猫壹棉被 468
81:崩坏吧主人 466
82:咖啡馆儿 464
83:花臂男神丶沈迪奥 460
84:叫我父多吧 458
85:主播Dyz 457
86:有一只大狗 456
87:小逍遥生 444
88:熊猫TV丶黑默丁宇 440
89:YK丶唯一 429
90:熊猫尼古拉斯胖虎 428
91:深圳AD牌面 427
92:AstonMartin呦 419
93:橘子味de茜喵喵Cc 416
94:熊猫TV维他柠檬茶 387
95:内江扬子鳄 362
96:请叫我丫头姐 360
97:社会我墙哥丶 360
98:风拓的契约 357
99:日暮哟 354
100:小v锐雯永不抗压 339
101:睿智冷静的耳鼻 328
102:小风风c 315
103:熊猫咪咪2016 312
104:学锅不背锅 312
105:吃藕人的小丑 298
106:鲁噜噜噜噜噜 296
107:龙之舞丶 274
108:三木阿_森 265
109:安逸kuku 228
110:潇洒的小苏苏 217
111:2017英雄联盟全明星 212
112:请叫我子弹丶 211
113:AD江流儿 210
114:YINGQIWEI 198
115:请叫我万哥 181
116:XOL丶梦帝 174
117:纳纳纳c 168
118:步子丶 159

原生爬虫小Demo的更多相关文章

  1. 11.Python使用Scrapy爬虫小Demo(新手入门)

    1.前提:已安装好scrapy,且已新建好项目,编写小Demo去获取美剧天堂的电影标题名 2.在项目中创建一个python文件 3.代码如下所示: import scrapy class movies ...

  2. js存款计算器原生小demo

    大家好,本人是初入前端的一枚程序猿,深知js底层开发的重要性,这也是我的软肋所在(曾经以为),渐渐的明白了一个道理,饭要一口口吃,路要一步步走,这也是我想告诉给所有刚刚进入IT行业的技术员们,沉下心, ...

  3. jsoup爬虫简书首页数据做个小Demo

    代码地址如下:http://www.demodashi.com/demo/11643.html 昨天LZ去面试,遇到一个大牛,被血虐一番,发现自己基础还是很薄弱,对java一些原理掌握的还是不够稳固, ...

  4. 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo

    简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...

  5. 原生JS写了一个小demo,根据输入的数字生成不同背景颜色的小方块儿~

    昨天练习写了这个小demo,个人觉得通过设置定位元素left和top的值,来实现换行的功能,这种方法很巧妙~ 另外,如下代码中的随机颜色的获取,还请各位前辈多多指教:需要改进的地方:或者有没有更好的方 ...

  6. H5 PWA技术以及小demo

    H5 PWA技术 1.原生app优缺点 a.体验好.下载到手机上入口方便 b.开发成本高(ios和安卓) c.软件上线需要审核 d.版本更新需要将新版本上传到不同的应用商店 e.使用前需下载 2.we ...

  7. 适合新手的Python爬虫小程序

    介绍:此程序是使用python做的一个爬虫小程序  爬取了python百度百科中的部分内容,因为这个demo是根据网站中的静态结构爬取的,所以如果百度百科词条的html结构发生变化 需要修改部分内容. ...

  8. iOS11 SDK 新特性 CoreML 及swift 小demo

    github代码 如果本博客对您有帮助,希望可以得到您的赞赏! swift 机器学习Core ML的简单调用小demo.完整代码附上: https://github.com/Liuyubao/LYBC ...

  9. 新手 gulp+ seajs 小demo

    首先,不说废话,它的介绍和作者就不在多说了,网上一百度一大堆: 我在这里只是来写写我这2天抽空对seajs的了解并爬过的坑,和实现的一个小demo(纯属为了实现,高手请绕道); 一.环境工具及安装 1 ...

随机推荐

  1. POJ 2250

    #include <iostream> #include <stack> #define MAXN 150 #include <string> using name ...

  2. Mac 10.12允许任何来源

    sudo spctl --master-disable 然后即可设置.

  3. oauth2.0实现sso单点登录的方式和相关代码

    SSO介绍 什么是SSO 百科:SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他 ...

  4. 【链表】Rotate List(三个指针)

    题目: Given a list, rotate the list to the right by k places, where k is non-negative. For example:Giv ...

  5. Python -- 网络编程 -- Socket简单网络通信

    Qt如果多线程的话,似乎会出BUG 1.服务端(server.py) import sys, socket, threading import binascii from PyQt4 import Q ...

  6. Python -- 图片处理

    使用PIL库 转换图片格式(jpg  -->  png) from PIL import Image Image.open('E:/art.jpg').save('E:/art.png')

  7. 两个字符串 char* a, char* b,输出b在a中的位置次序。

    /** 题目: 两个字符串 char* a, char* b,输出b在a中的位置次序. void output_postion(const char* a, const char* b); 如:a = ...

  8. flex的使用以及布局

    1.添加flex属性后的区别 <style> body{ font-size:35px; } .flex-box{ display:flex; display: -webkit-flex; ...

  9. ID3、C4.5和CART决策树对比

    ID3决策树:利用信息增益来划分节点 信息熵是度量样本集合纯度最常用的一种指标.假设样本集合D中第k类样本所占的比重为pk,那么信息熵的计算则为下面的计算方式 当这个Ent(D)的值越小,说明样本集合 ...

  10. 解决MySQL联表时出现字符集不一样

    mysql 建表时都会设置表的字符集和排序规则,通常是 utf8,不过我这边习惯建表的字符集是 utf8mb4,排序规则是 utf8mb4_unicode_ci.有些 utf8mb4 的表默认排序规则 ...