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. CPM(Cluster Percolation method)派系过滤算法

    一.概念 (1)完全子图/全耦合网络/k-派系:所有节点全部两两相连 图1 这些全耦合网络也成为派系,k-派系表示该全耦合网络的节点数目为k 1)k-派系相邻:两个不同的k-派系共享k-1个节点,认为 ...

  2. implements和extends的区别

    extends可以理解为全盘继承了父类的功能 implements可以理解为为这个类附加一些额外的功能 举个例子,Animal是一个父类,cat,dog,bird,insect都extends了Ani ...

  3. docker 微镜像-alpine

    刚想找maven自动发布项目到tomcat, 突然看到个好玩的, docker微镜像 -- alpine 直接粘一段: Alpine Linux Docker镜像基于Alpine Linux操作系统, ...

  4. 开发小技巧1——Logger

    开发小技巧1——Logger 在项目中加入静态Logger类,用于捕获并记录程序的进度.错误信息:   public static class Logger { public static void ...

  5. TCP三次握手/四次挥手

    TCP 三次握手 TCP 连接是通过三次握手进行初始化的.三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程: 1.  ...

  6. 关于EJB,为什么用EJB?为什么不用EJB?

    http://blog.csdn.net/linxi1209163com/article/details/51029890 一:什么是EJB 官方说法,就是企业级是基于语言的服务器框架技术,通过我们可 ...

  7. win7 iis7 asp.net 编译器错误消息: CS0016:

    编译器错误消息: CS0016: 未能写入输出文件“c:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root ...

  8. Bootstrap table 跨页全选

    此代码是针对于bootstrap table中分页的跨页全选. 以下是整个bootstrap的定义 <script type="text/javascript" src=&q ...

  9. ShellExecute 启动外部程序 参数详细介绍

    ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件.打开一个目录.打印一个文件等等),并对外部程序有一定的控制. 目录 1基本简介 2原型参数 3返回值 4例子 5特殊用法 ...

  10. C# byte 和 char 转化

    C#  byte 和 char 可以认为是等价的.但是在文本显示的时候有差异.   c# 使用的是unicode字符集,应该和为ascii相互转换 只能转换到字符的unicode编码,或者由unico ...