本篇是在学习Python基础知识之后的一次小小尝试,这次将会爬取熊猫TV网页上的王者荣耀主播排名,在不借助第三方框架的情况下演示一个爬虫的原理。

一、实现Python爬虫的思路

第一步:明确目的

1.找到想要爬取数据的网页

2.分析网页结构,找到需要爬取数据所在的标签位置

第二步:模拟Http请求,提取数据,加工数据

1.模拟Http网络请求,向服务器发送请求,获取服务器返回给我们的html

2.使用正则表达式从Html中提取我们需要的数据(比如本例中的主播名字和人气)

3.对提取的数据进行加工,显示成我们可以直观查看的形式

二、查看网页源码,观察关键值

我们应该首先找到需要处理的网页,即:熊猫TV网页上的王者荣耀,然后查看这个网页的源代码,观察我们需要关注的数据在哪个位置,下面是我们截取的网页效果图:

然后,我们需要在浏览器中查看当前网页的Html源码,不同的浏览器中查看的操作会有所不同,这个需要自行百度一下。此次我们需要找到每个主播的名字和视频的浏览量,从源码中我们可以很快发现这些关键数据的位置如图中的标注:

三、实现Python爬虫的具体实践

下面就是实现爬取数据的具体操作了,这里是创建了一个爬虫类Spider,然后使用不同的正则获取Html标签里的数据,进而将其重新整理后打印显示,具体的代码如下:

from urllib import request #导入模块urllib,用于发起网络请求,获取数据

import re #导入模块re,用于实现正则提取信息

class Spider():

#需要抓取的网络链接url = "https://www.panda.tv/cate/kingglory"#正则:获取显示视频信息的div代码串reString_div = '<div class="video-info">([\s\S]*?)</div>'   #正则:获取主播名reString_name = '</i>([\s\S]*?)</span>'#正则:获取视频浏览量reString_number = '<span class="video-number">([\s\S]*?)</span>'def __fetch_content(self):'''这里是方法注释请求网络,获取整个网页的Hmtl字符串'''r = request.urlopen(Spider.url)data = r.read()htmlString = str(data,encoding="utf-8")return htmlStringdef __alalysis(self,htmlString):'''使用正则初步获取数据,得到主播信息(主播名和浏览量)的数组'''videoInfos = re.findall(Spider.reString_div,htmlString)anchors = []#print(videoInfos[0])for html in videoInfos :name = re.findall(Spider.reString_name,html)number = re.findall(Spider.reString_number,html)anchor = {"name":name,"number":number}anchors.append(anchor)#print(anchors[0])return anchorsdef __refine(self,anchors):'''将数据进一步提炼,去除空格等多余字符'''f = lambda anchor :{"name":anchor["name"][0].strip(),"number":anchor["number"][0]}newAnchors = list(map(f,anchors))#print(newAnchors)return newAnchorsdef __sort(self,anchors):'''数据分析:排序浏览量从大到小 '''anchors = sorted(anchors,key=self.__sort_seed,reverse = True)return anchorsdef __sort_seed(self,anchor):'''排序规则'''list_nums = re.findall('\d*',anchor["number"])number = float(list_nums[0])if '万' in anchor["number"]:number = number * 10000return numbedef __show(self,anchors):'''展示数据,将已经排序好的数据打印出来'''for rank in range(0,len(anchors)):print("第" + str(rank+1) +"名:" + anchors[rank]["number"] + "\t"  + anchors[rank]["name"])def startRun(self):'''程序入口,开始运行爬虫'''htmlString = self.__fetch_content()anchors = self.__alalysis(htmlString)anchors = self.__refine(anchors)anchors  = self.__sort(anchors)self.__show(anchors)

#创建爬虫类,爬取数据

spider = Spider()

spider.startRun()

推荐我们的Python学习扣qun:784758214 ,看看前辈们是如何学习的!从基础的python脚本到web开发、爬虫、django、数据挖掘等【PDF,实战源码】,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!每天都有大牛定时讲解Python技术,分享一些学习的方法和需要注意的小细节,点击加入我们的 python学习者聚集地

Python学习:爬虫示例相关推荐

  1. Python学习-爬虫入门知识点整理

    1 通讯协议 1.1 端口 进行数据通讯的步骤: (1)找到对方IP (2)数据要发送到对方指定的应用程序上.为了标识这些应用程序,所以给这些网络应用程序都用数字进行了标识,这个数字就叫端口,这里的端 ...

  2. Python 学习爬虫

    刚开始学习爬虫,用了以下代码 from urllib import request from http import cookiejar cookie_support = request.HTTPCo ...

  3. python学习——爬虫(抖音)

    爬虫仅限于知识学习,本代码不得用于任何商业活动侵权,如有不适,请联系博主进行修改或者删除. 今天总结的第三篇,这些个代码是模仿着写出来的,这儿我着重写我觉有用的东西了,一上午过去了,还只弄完三篇,时间 ...

  4. python学习爬虫之删除无用字符以及空白替换等()

    Python中字符串String去除出换行符和空格的问题,在日常使用Python的过程中,时常碰到要去除字符串中的空格和指定字符的情况,方法汇总如下: 一.strip() .代表一个空格 " ...

  5. 一个简单的python网路爬虫示例——爬取《后来的我们》影评

    1.爬取第一页的所有影评 首先我们用百度搜索<后来的我们>影评,记录下此时的网址,如下: https://movie.douban.com/subject/26683723/comment ...

  6. python学习:爬虫爬取微信公众号数据

    spider 一.获取链接 二.爬取文章标题.文章链接.文章正文.时间 三.爬取阅读量与点赞数 参考: https://blog.csdn.net/qq_45722494/article/detail ...

  7. Python PhantomJS 爬虫 示例

    from selenium import webdriver# 请求url url = "https://auctions.freemansauction.com/auction-lot-d ...

  8. python 学习爬虫教程~

    思路:: (本文没有用xpath定位,xpath需要导入第三方库   from lxml import etree) 1.首先通过urllib类获取到网页的所有内容 2.通过partition获取其中 ...

  9. python软件代码示例-python 示例代码1

    第一章 python基础一 ​在此不再赘述为什么学习python这门编程,网上搜索一箩筐.我在此仅说一句python的好,用了你就会爱上它. 本python示例代码1000+带你由浅入深的了解pyth ...

最新文章

  1. MySQL太细碎了,我硬生生捋出了一条核心大主线!
  2. Google Analytics虚拟页面和事件追踪的区别
  3. invalid floating point operation什么意思_数据可视化有意思的小例子:Taylor Swift 歌词数据分析和可视化...
  4. Servlet、Struts2以及SpringMvc中的线程安全
  5. 英语词汇辨异 —— 形近字、近义词
  6. Hive with as语法
  7. SDN/NFV在演进中探寻路径
  8. python汇率转换
  9. Quartz集群配置报错 This scheduler instance (XXXX) is still active but was recovered by another instance...
  10. emlog模板开发基础2022最新指南
  11. Verilog HDL系统任务说明语句task
  12. cocos-lua环境搭建
  13. 军犬舆情每日热点:强生爽身粉致癌案 被判赔偿47亿美元;华为正式进军电视行业
  14. java中GRID_size的作用_Grid布局简介
  15. NVT平台PWM配置
  16. 卡巴斯基更新新方法(不需要代理服务器)
  17. VS2019中C语言中使用scanf 报错_CRT_SECURE_NO_WARNINGS,简单解决,一劳永逸
  18. Electron系列教程——第二篇:第一个示例
  19. IT行业需要一个不断学习和勤奋努力的过程[图]
  20. linux系统下解除yozooffice2016提示升级正式版操作

热门文章

  1. 计算机学院的迎新晚会,计算机学院举办迎新晚会
  2. BIM与GIS可视化平台的三维城市应用
  3. 计算机毕业设计Java大学校友信息管理系统(源码+系统+mysql数据库+lw文档)
  4. MT4.0版下载及相关说明
  5. 天津专家成功发明脉象仪、舌象仪等中医辅助诊断设备,准确率超过95%
  6. 赤裸裸的数学:牛顿二项公式
  7. python统计word文档页码(pdf、doc、docx)
  8. TCP/IP基础文章(安全篇)
  9. iOS开发笔记(二)
  10. 模糊图像检测-无参考图像的清晰度评价