原生爬虫小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 ...
随机推荐
- method swizzing
原理 类的方法类别中,选择子的名称通过映射表找到应该调用的方法.如下所示:  OC 的运行时提供了几个方法可以操作这张表.可以向其中新增选择子,改变选择子的实现,或者交换选择子映射到的指针.  在 ...
- day 31 html(二) 和css入门
前情提要: 本次主要是继续昨天学的简单的html 补充以及 css的简单入门 一:表单标签 >1:get请求 <!DOCTYPE html> <html lang=" ...
- centos7搭建kafka集群-第一篇
Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我想对用户 ...
- JS:函数柯里化
函数柯里化 柯里化 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术. 简单来说,就 ...
- A Node Influence Based Label Propagation Algorithm for Community detection in networks 文章算法实现的疑问
这是我最近看到的一篇论文,思路还是很清晰的,就是改进的LPA算法.改进的地方在两个方面: (1)结合K-shell算法计算量了节点重重要度NI(node importance),标签更新顺序则按照NI ...
- 搭建互联网架构学习--006--duboo准备之zk集群部署安装
dubbo集群部署安装依赖于zookeeper,所以先安装zookeeper集群. 1.准备三台机器做集群 2.配置 配置java环境 ,2,修改操作系统的/etc/hosts文件,添加IP与主机名 ...
- 手机访问电脑中部署的tomcat应用
手机访问电脑中部署的tomcat应用. 操作步骤: 第一种:有无线路由的情况. 1.建议局域通信. 操作如下:电脑,手机都自动连接到无线路由器中(无线路由不必非要联网). 2.启动电脑用的tomcat ...
- org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security .AccessControlException: Permission denied: user=Administrator, access=WRITE, inode="hadoop": hadoop:supergroup:rwxr-xr-x
这时windows远程调试hadoop集群出现的这里 做个记录 我用改变系统变量的方法 修正了错误 网上搜索出来大概有三种: 1.在系统的环境变量或java JVM变量里面添加HADOOP_USE ...
- 【数组】Maximum Subarray
题目: Find the contiguous subarray within an array (containing at least one number) which has the larg ...
- free -m内存使用详解
第一部分Mem这行:total -> 内存总数: 32014M=32Gused -> 已经使用的内存数: 7665Mfree -> 空闲的内存数: 24349Mshared -> ...