# -*- coding: utf-8 -*- """ Created on Thu Jan 7 02:44:53 2020 @author: honey 学习项目实战,爬取本博客文章访问排名 """ from urllib import request import re class Spider(): root_pattern = '<article class="post-list" role="article">([sS]*?)</article>' bt = '.html">([sS]*?)</a> </h2>' ydrs = '<i class="fa fa-eye"></i>([sS]*?)</span></div>' #获取采集的链接 def __get_url(self,n): urllist = [] for i in range(n): urllist.append('https://qinzc.me/page/%i' % (i+1)) return urllist #网页源码获取 def __fetch_content(self,url): r = request.urlopen(url) #访问网页 htmls = r.read() #读取htmls数据 htmls = str(htmls, encoding='UTF-8') #UTF8格式 return htmls #html页面解析 def __analysis(self, htmls): """获取文章所有列表html源码""" root_html = re.findall(Spider.root_pattern, htmls) anchors = [] for html in root_html: name = re.findall(Spider.bt, html) #获得标题 number = re.findall(Spider.ydrs, html) #获得围观人数 tmp = {'name':name, 'number':number} #组成字典 anchors.append(tmp) #获取后加入到anchors列表变量 return anchors #数据清洗 def __refine(self, anchors): """数据精炼,去掉空格等无用字符串,再次组成一个字典""" l = lambda cs: { 'name':cs['name'][0].strip(), 'number':cs['number'][0].strip().replace(' ',''), } return map(l, anchors) #以围观人数排序 def __sort(self, zzsj): paixu = sorted(zzsj, key=self.__sort_seed, reverse=True) #降序排列 return paixu #排序的key值调用的函数 def __sort_seed(self, anchor): r = re.findall('d*', anchor['number']) #匹配数字 number = float(r[0]) if '人' in anchor['number']: number *= 10000 return number #return anchor['number'] #数据显示 def __show(self, anchors): # for anchor in anchors: # print(anchor['number'] + ' ======= ' + anchor['name']) for rank in range(0, len(anchors)): print('rank ' + str(rank + 1) + ': ' + anchors[rank]['name'] + '------' +anchors[rank]['number']) def go(self): """ 此处是注释 """ urll = self.__get_url(23) htmls = [] for n in urll: htmls.append(self.__fetch_content(n)) #网页源码获取 print('已经获取 %i 个页面' % len(htmls)) jiexi = [] for n in htmls: #html页面解析 jiexi.append(self.__analysis(n)) qingxi = [] for n in jiexi: #数据清洗 qingxi.extend(list(self.__refine(n))) print('已经采集到 %i 条数据' % len(qingxi)) paixv = self.__sort(qingxi) #以围观人数排序 print('排序完成') self.__show(paixv) spider = Spider() #实例化 spider.go() #开始采集
#输出结果:
已经采集到 222 条数据 排序完成 rank 1: C组-战地3联机教程-皓月------51367人围观 rank 2: kcptun加速SS实战-亲测100%加速成功------16152人围观 rank 3: 七个经典的聚会游戏惩罚措施------13011人围观 rank 4: VMware Vsphere ESXI 6.5 忘记Root密码清空,恢复实战!------3774人围观 rank 5: Linux一键BCDN挖矿安装脚本------3333人围观 rank 6: 90亿像素银河系全景图【24.6GB】【百度云盘】------2731人围观 rank 7: C组-战地登录器开发更新日志------2574人围观 rank 8: BF登录器v3.0 新UI开发进度 预览版------2349人围观 rank 9: Centos7下搭建部署DoClever接口管理平台------2258人围观 rank 10: 赞助名单------2172人围观 rank 11: vi/vim键盘图及其基本命令学习------2008人围观 rank 12: Supervisor 监控守护BCDN------1923人围观 rank 13: gitlab 中文版安装------1907人围观 rank 14: 偏光3D电视无需3D模式观看3D立体图片的方法------1891人围观 rank 15: 红米5Plus 刷第三方REC+Xposed框架【实测成功】------1879人围观 rank 16: S-S-R部署实战------1828人围观 rank 17: 10个最“牛叉”的代码注释------1716人围观 rank 18: 一个从1996年备份了超过4000亿个网页的网页时光机------1687人围观 rank 19: 分享:设置Windwos桌面动态壁纸方法------1492人围观 rank 20: 超强GIF截图工具-GifCam5.1汉化版------1463人围观 rank 21: 莓果API整理V1.2------1442人围观 rank 22: 双机同步的几点建议------1441人围观 rank 23: mysql 语句,表的操作------1405人围观 rank 24: 战地3狗斗小教程v1.2------1365人围观 rank 25: Win 2003 服务器VPN搭建视频教程------1346人围观 rank 26: 全国疯传DIY双机偏振3D视频+图文教程,NND再也不用求人了!------1295人围观 rank 27: Gitlab+Jenkins+Harbar+Docker自动发布流程设计实战------1260人围观 rank 28: linux用户权限集中管理方案------1245人围观 rank 29: 3张图片【1亿6千万像素】7500 x 21250分辨率洋图片、清晰度爆人眼球!【332MB】【百度网盘】------1175人围观 rank 30: 易语言停止子程序 的另类方法------1172人围观 rank 31: 小巧Flash文字动画制作工具------1164人围观 rank 32: 中国掘金者------1118人围观 rank 33: linux运维面试经典习题2------1116人围观 rank 34: linux运维面试经典习题1------1107人围观 rank 35: Linux自动化部署流程-秒级回滚-shell脚本------1100人围观 rank 36: 搭建企业级Docker私有仓库(Harbor)------1065人围观 rank 37: 《战地3》侦察兵全方位分析心得攻略------990人围观 rank 38: 45条网店运营知识,写的很全很认真------969人围观 rank 39: 基础知识:三十分钟看清经济机器如何运转------964人围观 rank 40: linux正则表达式------949人围观 rank 41: linux自动化自动重装系统------947人围观 rank 42: linux系统定时任务入门------921人围观 rank 43: 面对各大网盘逐渐关停我们怎么办?------916人围观 rank 44: 《战地3》十大不科学之处------912人围观 rank 45: “人脉”是麻烦出来的------910人围观 rank 46: 你这辣椒辣吗?------888人围观 rank 47: linux系统文件属性知识进阶------880人围观 rank 48: 麻烦(写得真好)------866人围观 rank 49: jenkins+gitlab自动触发------864人围观 rank 50: linux用户行为日志审计管理方案(单机)------864人围观 rank 51: 《战地3》侦察兵心得攻略------845人围观 rank 52: gitlab服务运维,备份与恢复------842人围观 rank 53: 《战地3》战斗机简略心得和各地图飞行战术------824人围观 rank 54: 《战地3》防空车驾驶员战场生存指南------821人围观 rank 55: kubernetes 1.13.2部署(kubeadm)------799人围观 rank 56: nginx实现一个域名配置多个laravel项目------788人围观 rank 57: linux系统文件权限体系------776人围观 rank 58: linux用户管理------755人围观 rank 59: linux系统发邮件必知必会-发送邮件的服务配置------741人围观 rank 60: nfs网络文件实战入门------733人围观 rank 61: 8-Kubernetes PV、PVC------718人围观 rank 62: MySql常用查询语句(23种)------712人围观 rank 63: Linux基础命令实战------709人围观 rank 64: linux网络基础配置------708人围观 rank 65: 13-kubernetes dashboard认证及分级授权------672人围观 rank 66: linux系统磁盘分区知识------645人围观 rank 67: linux一键优化系统脚本(centos6)------643人围观 rank 68: Linux运维监控概述、标准化------635人围观 rank 69: Ngin+php7.2-docker镜像------631人围观 rank 70: linux系统初步优化------625人围观 rank 71: 安全优化-项目开发流程及数据库更新流程------607人围观 rank 72: jenkins+docker自动发布到测试环境------604人围观 rank 73: 磁盘设备知识------603人围观 rank 74: linux系统目录结构知识------596人围观 rank 75: php.ini 配置文件 中文注释 详解------587人围观 rank 76: ssh服务重要知识------585人围观 rank 77: shell 例子------584人围观 rank 78: Linux基础命令总结------583人围观 rank 79: web集群架构部署顺序------577人围观 rank 80: Prometheus 学习笔记------573人围观 rank 81: 2-Kubernetes集群二进制包部署------563人围观 rank 82: linux系统进阶优化------563人围观 rank 83: 11-kubernetes认证及serviceaccount------561人围观 rank 84: Linux代理上网-做为网关使用实战(类似路由器网关)端口转发------560人围观 rank 85: Nginx负载均衡之端口转发------558人围观 rank 86: sersync + rsync实时同步实战------558人围观 rank 87: LAMP与LNMP web架构深度优化实战------554人围观 rank 88: 14-Flannel网络插件网路策略配置------553人围观 rank 89: Linux系统中‘dmesg’命令处理故障和收集系统信息的7种用法------553人围观 rank 90: 生产环境常见的HTTP状态码列表------552人围观 rank 91: JAVA企业级应用TOMCAT实战------545人围观 rank 92: linux系统文件类型介绍------541人围观 rank 93: git与gitlab快速入门------540人围观 rank 94: docker快速入门------538人围观 rank 95: www服务apache软件实战入门------537人围观 rank 96: linux企业考试题------534人围观 rank 97: CPU高,手把手教你用Strace诊断问题------526人围观 rank 98: awstats日志分析工具配置实战nginx------522人围观 rank 99: 企业级数据备份方案实战------521人围观 rank 100: nginx-负载均衡入门实战------518人围观 rank 101: cacti监控服务安装搭建实战------512人围观 rank 102: rsync高级同步工具语法------512人围观 rank 103: LNMP潮流组合手把手搭建实战------508人围观 rank 104: rsync高级同步工具部署实战------508人围观 rank 105: 虚拟机克隆后无法上网的问题------506人围观 rank 106: MySQL表操作、修改权限------502人围观 rank 107: Cente7优化脚本------501人围观 rank 108: my-innodb-heavy-4G.cnf配置文件 注释 详解------498人围观 rank 109: ssh key企业批量分发自动化管理案例------496人围观 rank 110: 安装Prometheus+Grafana------495人围观 rank 111: Nagios监控服务端安装实战------493人围观 rank 112: 分布式MySQL-TiDB------490人围观 rank 113: httpd.ini配置文件详解------483人围观 rank 114: openstack安装入门------479人围观 rank 115: Mysql 多表联合查询------477人围观 rank 116: awstats配置分析nginx日志------472人围观 rank 117: MySQL数据库多实例应用实战------469人围观 rank 118: Fast CGI优化------469人围观 rank 119: Nagios图形显示介绍及实战------466人围观 rank 120: LAMP与LNMP加速与缓存优化进阶实战php编译------466人围观 rank 121: NOSQL之Memcached缓存服务实战------465人围观 rank 122: 企业级生产场景批量管理,自动化管理方案------458人围观 rank 123: MySQL主从复制实战------455人围观 rank 124: top命令------455人围观 rank 125: lvs+keepalived部署实战------453人围观 rank 126: MySQL数据库4种安装方法------452人围观 rank 127: MySQL主从复制不同步故障解决------450人围观 rank 128: lamp经典组合手把手企业实战搭建------449人围观 rank 129: NFS企业上机实战------447人围观 rank 130: iptables防火墙入门------445人围观 rank 131: MySql数据库的备份与恢复------445人围观 rank 132: 9-特殊存储卷configMap和Secret------444人围观 rank 133: Cobbler无人值守安装linux系统------443人围观 rank 134: Zabbix生产案例实战------443人围观 rank 135: 修改无法启动的Docker容器中的内容------438人围观 rank 136: linux添加新硬盘------437人围观 rank 137: nginx web服务入门实战------436人围观 rank 138: 2017年Linux运维人员必会开源运维工具体系------432人围观 rank 139: nginx/TCP状态/memcached/redis监控脚本------431人围观 rank 140: MySQL数据库优化------431人围观 rank 141: LVS集群DR模式配置实战------430人围观 rank 142: nagios客户端安装实战------429人围观 rank 143: PHP引擎优化------427人围观 rank 144: Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节------425人围观 rank 145: inotify + rsync工具实时同步方案实战------424人围观 rank 146: 实战模拟企业数据丢失案例------422人围观 rank 147: nginx.conf配置文件详解------419人围观 rank 148: Jenkins安装配置入门------417人围观 rank 149: Jenkins权限用户分配------415人围观 rank 150: apache企业级日志轮询cronolog实战------415人围观 rank 151: KVM虚拟机安装实战入门------414人围观 rank 152: cente7安装Zabbix 入门实战------413人围观 rank 153: MySql 语句入门------413人围观 rank 154: 17-资源指标API及自定义指标API------410人围观 rank 155: Keepalived高可用集群配置实战------407人围观 rank 156: Mysql 插入中文数据乱码问题------405人围观 rank 157: LVS集群及keepalived服务入门------401人围观 rank 158: www服务apache软件实战进阶------401人围观 rank 159: Docker 创建网络,自定义运行网段、添加网卡------400人围观 rank 160: 2018年学习目标《LINUX高级架构师》------399人围观 rank 161: 网站访问慢数据库问题排查------399人围观 rank 162: linux运维面试经典习题3------398人围观 rank 163: 主从复制读写分离授权3种方案------395人围观 rank 164: Nagios服务端目录及配置实战------388人围观 rank 165: cente6 安装Zabbix 实战------386人围观 rank 166: 架构脚本开发笔记------386人围观 rank 167: 轻松应对IDC机房带宽突然暴涨问题------386人围观 rank 168: 运维知识体系------382人围观 rank 169: split命令------381人围观 rank 170: linux挂载及fstab------380人围观 rank 171: shell监控web服务的多种方案------379人围观 rank 172: ELKStack 安装部署实战------377人围观 rank 173: Nginx、Apache、Mysql、PHP环境编译参数查看------375人围观 rank 174: SSR负载均衡配置------372人围观 rank 175: CentOS6无人值守安装操作系统-PEX+Kickstart------371人围观 rank 176: 1-565个运维28期文件视频------370人围观 rank 177: linux运维发展路线规划------370人围观 rank 178: 4-kubernetes更新逻辑与策略------369人围观 rank 179: windows 查看程序后台运行的命令------367人围观 rank 180: 主宕机,从库切换主,继续和从同步过程方法------366人围观 rank 181: session共享会话存储实战------360人围观 rank 182: Docker-compose 容器编排入门------359人围观 rank 183: 数据库客户端安全策略------355人围观 rank 184: MySQL服务多种日志文件及多种引擎介绍------350人围观 rank 185: shell 笔记练习------347人围观 rank 186: NOSQL之Redis持久化缓存服务基础实战------347人围观 rank 187: shell监控MySQL服务的企业案例多方法------346人围观 rank 188: shell 函数入门------343人围观 rank 189: Nagios监控MySQL主从状态实战------342人围观 rank 190: shell 基础入门------337人围观 rank 191: shell 语句入门------332人围观 rank 192: 7-Kubernets存储卷------331人围观 rank 193: shell 开发环境配置调整及优化,调试技巧------326人围观 rank 194: 12-kubernetes-rbac------323人围观 rank 195: Docker 容器跨主机通信方法1------323人围观 rank 196: 10-kubernetes statefulset控制器------319人围观 rank 197: linux 案例------318人围观 rank 198: 3-Pod控制器入门------316人围观 rank 199: shell 数组入门------315人围观 rank 200: Liunx运维需要掌握的课程表------314人围观 rank 201: Memcached 管理监控工具安装------310人围观 rank 202: Vim 复制粘帖格式错乱问题的解决办法------306人围观 rank 203: Jenkins升级------298人围观 rank 204: Elasticsearch head插件安装------293人围观 rank 205: 5-kubernetes组件Service入门------288人围观 rank 206: 100W高并发(转载)------278人围观 rank 207: 16-容器资源需求、资源限制及HeapSter------276人围观 rank 208: docker 日志收集------269人围观 rank 209: docker 日志收集------268人围观 rank 210: Docker 容器跨主机通信方法2------260人围观 rank 211: 实现单机百万并发------256人围观 rank 212: 2-Kubernetes 资源清单定义入门------256人围观 rank 213: 3-kubectl命令行管理工具------253人围观 rank 214: 1-kubernets 快速入门------252人围观 rank 215: docker容器中使用定时任务------242人围观 rank 216: Swarm集群入门------239人围观 rank 217: 6-Ingress 与 Ingress Controller------239人围观 rank 218: 15-调度器、预选策略及优选函数------235人围观 rank 219: Docker 创建网络,自定运行网段------202人围观 rank 220: Docker 单机编排入门------197人围观 rank 221: 1-Kubernetes概述------187人围观 rank 222: 随手记录------48人围观
版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!