原生爬虫小Demo
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的更多相关文章
- 11.Python使用Scrapy爬虫小Demo(新手入门)
1.前提:已安装好scrapy,且已新建好项目,编写小Demo去获取美剧天堂的电影标题名 2.在项目中创建一个python文件 3.代码如下所示: import scrapy class movies ...
- js存款计算器原生小demo
大家好,本人是初入前端的一枚程序猿,深知js底层开发的重要性,这也是我的软肋所在(曾经以为),渐渐的明白了一个道理,饭要一口口吃,路要一步步走,这也是我想告诉给所有刚刚进入IT行业的技术员们,沉下心, ...
- jsoup爬虫简书首页数据做个小Demo
代码地址如下:http://www.demodashi.com/demo/11643.html 昨天LZ去面试,遇到一个大牛,被血虐一番,发现自己基础还是很薄弱,对java一些原理掌握的还是不够稳固, ...
- 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo
简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...
- 原生JS写了一个小demo,根据输入的数字生成不同背景颜色的小方块儿~
昨天练习写了这个小demo,个人觉得通过设置定位元素left和top的值,来实现换行的功能,这种方法很巧妙~ 另外,如下代码中的随机颜色的获取,还请各位前辈多多指教:需要改进的地方:或者有没有更好的方 ...
- H5 PWA技术以及小demo
H5 PWA技术 1.原生app优缺点 a.体验好.下载到手机上入口方便 b.开发成本高(ios和安卓) c.软件上线需要审核 d.版本更新需要将新版本上传到不同的应用商店 e.使用前需下载 2.we ...
- 适合新手的Python爬虫小程序
介绍:此程序是使用python做的一个爬虫小程序 爬取了python百度百科中的部分内容,因为这个demo是根据网站中的静态结构爬取的,所以如果百度百科词条的html结构发生变化 需要修改部分内容. ...
- iOS11 SDK 新特性 CoreML 及swift 小demo
github代码 如果本博客对您有帮助,希望可以得到您的赞赏! swift 机器学习Core ML的简单调用小demo.完整代码附上: https://github.com/Liuyubao/LYBC ...
- 新手 gulp+ seajs 小demo
首先,不说废话,它的介绍和作者就不在多说了,网上一百度一大堆: 我在这里只是来写写我这2天抽空对seajs的了解并爬过的坑,和实现的一个小demo(纯属为了实现,高手请绕道); 一.环境工具及安装 1 ...
随机推荐
- 杭电OJ之2020-2029(C语言版)
2020. 绝对值排序 题目 Problem Description 输入n(n<=100)个整数,按照绝对值从大到小排序后输出.题目保证对于每一个测试实例,所有的数的绝对值都不相等. Inpu ...
- Xcode 9 Analyzing Crash Reports
Analyzing Crash Reports After you distribute your app for testing by using TestFlight or after you m ...
- aspectj
http://stackoverflow.com/questions/25209339/spring-aspectj-weaving-for-java-8-using-aspectj-maven-pl ...
- centos shell 编程-通过端口号kill对应的进程
centos shell 编程-通过端口号kill对应的进程 方式一.端口固定 ------------------killportprocess.sh fSum() { pid=$(lsof ...
- Java学习之路(十二):IO流<二>
字符流 字符流是可以直接读写字符的IO流 使用字符流从文件中读取字符的时候,需要先读取到字节数据,让后在转换为字符 使用字符流向文件中写入字符时,需要把字符转为字节在写入文件 Reader和Write ...
- Linux的管道命令
Linux的管道命令 管道命令(Pipe) 管道命令用"|"来表示,管道命令需要接收前一个命令的输出来进行操作,但不能处理前一个命令的错误. //选取界面:cut,grep cut ...
- hbase集群中其中某个regionserver 没有启动
第一步: date命令查看各个机器的时间 发现linux02机器时间差了2个多小时 第二步:ntpdate pool.ntp.org 修改错误时间的机器 第三步: 重启 hbase
- 【C#小知识】C#中一些易混淆概念总结(二)--------构造函数,this关键字,部分类,枚举 分类: C# 2014-02-03 01:24 1576人阅读 评论(0) 收藏
目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 继上篇对一些C#概念问题进行细节的剖析以后,收获颇多.以前,读书的时候,一句话一掠而 ...
- 【数组】Rotate Image
题目: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwis ...
- Xshell用鼠标选中一段文字后自动换行的问题
JavaScript HTML(CSS) ASP 跨浏览器开发 IIS Apache vbScript JavaScript 应用服务器 XML/XSL 其他 CGI Ajax 非技术区 Cold ...