原生爬虫小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 ...
随机推荐
- Optimizing Your App for Today’s Internet
这个 session 的主讲人感觉是一个很典型的美国人,年纪也不小. 网络现状 四十亿人在使用因特网,大概占有世界人口的一半.上网人数的增长在减缓. 但是网络仍然在增长.增长点主要在物联网.第三世界国 ...
- css实现响应式九宫格效果
1. 首先看下九宫格的效果图: 2. html代码比较简单,如下: <div class="main"> <div class="box1"& ...
- CentOS7搭建FastDFS V5.11分布式文件系统-第一篇
1.绪论 最近要用到fastDFS,所以自己研究了一下,在搭建FastDFS的过程中遇到过很多的问题,为了能帮忙到以后搭建FastDFS的同学,少走弯路,与大家分享一下.FastDFS的作者淘宝资深架 ...
- 12、xamarin form中实现H5 网页唤醒微信支付的方法
在微信的支付中有种支付叫微信H5支付.方便用户在网页中轻松唤起微信进行支付. 当然微信不推荐大家使用这样的方式唤起微信支付.建议app还是使用正常的微信支付sdk即可 服务端与其他的建议参考微信支付官 ...
- CS231n学习笔记-图像分类笔记(上篇)
原文地址:智能单元 图像分类:所谓图像分类问题,就是已有固定的分类标签集合,然后对于输入的图像按照标签类别,将其打上标签. 下面先介绍一下一个简单的图像如何利用计算机进行分类: 例子:以下图为例,图像 ...
- jQuery表格自动增加
<!DOCTYPE html> <html dir="ltr" lang="zh-CN"> <head> <meta ...
- python 把一文件包含中文的字符写到另外文件乱码 UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position
报错的代码是: file2 = open('target.txt','w')for line in open('test.txt'): file2.write(line)原因:文件编码不一致导致解决方 ...
- windows 64位 下 安装 tomcat
tomcat 版本 windows 64位 .zip apache-tomcat-7.0.42.zip 注意: 1. 安装目录不得有 空格 或 中文字符 2. 然后,在系统环境变量下,新建一个变量: ...
- ambari 2.6.2 安装 hdp 2.6.5.0 遇到的问题
1.hive-client 无法安装 一直报错(symlink target already exists and it is not a symlink.),hive-client 已经存在且不是 ...
- golang-nsq消息队列应用
1. 安装nsq brew install nsq 2.启动nsq https://nsq.io/overview/quick_start.html 3.golang client var produ ...