原生爬虫小Demo

news/2024/7/19 11:41:50 标签: 爬虫
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

 

转载于:https://www.cnblogs.com/jokerq/p/8722371.html


http://www.niftyadmin.cn/n/754866.html

相关文章

rootkit、ark(anti-root-kit)和apt以及anit-apt和hips

rookit是一种特殊的恶意软件&#xff0c;它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息&#xff0c;比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。 ark&#xff0c;全称是anti-root-kit&#xff0c;就是反rookit的意思。ark往往是一个…

白话kali linux上可以安装什么小游戏(好奇版)

技术博客的可读性非常重要&#xff0c;这也是技术博客写作的重要原则。 电脑系统是kali linux2018.1版本的&#xff0c;64bit 游戏是极客精神的产物&#xff0c;这句话没毛病。 因为之前在windows电脑上一直都是很方便的下载游戏&#xff0c;玩&#xff0c;像红色警戒2&#xf…

一种通用的Qt数据库接口操作方法

一种通用的Qt数据库接口操作方法 自己开发了一个股票软件&#xff0c;功能很强大&#xff0c;需要的点击下面的链接获取&#xff1a; 自研股票智能分析报警软件更新链接 - 一字千金 - 博客园 目录 1 前言... 1 2 QT环境下数据库配置... 2 2.1 开发环境.…

处理器虚拟化技术

处理器虚拟化——VMX Intel提供3个层面的虚拟化技术(Intel Virtualization Technology)   1.基于处理器的虚拟化技术(Intel VT-X) 全称为 Virtualization Technology for x86   2.基于PCI总线域设备实现的I/O虚拟化技术(Intel VT-D) 全称为Virtualization Technology for …

2018年东北农业大学春季校赛 B wyh的矩阵【找规律】

链接&#xff1a;https://www.nowcoder.com/acm/contest/93/B来源&#xff1a;牛客网 题目描述 给你一个n*n矩阵&#xff0c;按照顺序填入1到n*n的数&#xff0c;例如n5&#xff0c;该矩阵如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2…

一阳穿三线实时筛选

自己开发了一个股票软件&#xff0c;功能很强大&#xff0c;需要的点击下面的链接获取&#xff1a; 自研股票智能分析报警软件更新链接 - 一字千金 - 博客园 一阳穿三线实时筛选股票软件 目录 1 概念介绍... 1 1.1 前言... 1 1.2 特征条件... 2 …

测试开发系列之Python开发mock接口(一)

本次测试开发系列给大家分享一下怎么用python开发mock接口。本次介绍下什么是mock接口&#xff0c;以及咱们开发之前需要做的准备。 什么是mock接口呢&#xff0c;举个栗子&#xff0c;你在一家电商公司&#xff0c;有查看商品、购物、支付、发货、收获等等等一大堆功能&#x…

vmx的应用

VT 是对资源的虚拟化管理的结果   在CPU端的虚拟化里 实现了VMX&#xff08;Virtual-Machine Extensions&#xff0c;虚拟机扩展&#xff09;架构   包含两种角色环境 VMM&#xff08;Virtual Machine Monitor&#xff0c;虚拟机监管者&#xff09;host   VM&#xff08;…