栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

使用python编写一个原生小爬虫

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用python编写一个原生小爬虫

引言

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

一、实现Python爬虫的思路

第一步:明确目的
1.找到想要爬取数据的网页
2.分析网页结构,找到需要爬取数据所在的标签位置

第二步:模拟Http请求,提取数据,加工数据
1.模拟Http网络请求,向服务器发送请求,获取服务器返回给我们的html
2.使用正则表达式从Html中提取我们需要的数据(比如本例中的主播名字和人气)
3.对提取的数据进行加工,显示成我们可以直观查看的形式

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

我们应该首先找到需要处理的网页,即:斗鱼TV网页上的英雄联盟,然后查看这个网页的源代码,观察我们需要关注的数据在哪个位置,下面是截取的网页效果图。

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

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

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

from urllib import request 
import re
class Spider():
    p = '

([sS]*)

' num = '([sS]*?)' # 匹配主播人气 name = '([sS]*?)' # 匹配主播名 url ='https://www.douyu.com/g_LOL' # 抓取网页数据 def __fetch_content(self): r = request.urlopen(Spider.url) print(r) htmls = r.read() htmls = str(htmls, encoding='utf-8') return htmls # 将数据放入到字典中 def __analysis(self, htmls): auchors = [] p = re.findall(self.p, htmls) for html in p: num = re.findall(Spider.num, html) name = re.findall(Spider.name, html) auchor = {'name': name,'number':num} auchors.append(auchor) return auchors # 提取name def __name(self,anchors): c=[] for a in anchors: for b in a['name']: c.append(b) return c # 提取number def __number(self, anchors): d = [] for a in anchors: for b in a['number']: d.append(b) return d #整理数据 def __show(self,name,number): for x,y in zip(name, number): print('主播名:'+x+'-------------------'+'人气:'+y) # 入口方法 def go(self): htmls = self.__fetch_content() anchors = self.__analysis(htmls) live_name = self.__name(anchors) live_number = self.__number(anchors) anchors = self.__show(live_name,live_number) spider = Spider() spider.go()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/220081.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号