python爬斗鱼直播房间名和主播名,Python爬虫获取斗鱼主播信息
Python爬虫实现获取斗鱼主播信息
我发现首页是一些推荐的主播,并不全面,不能全部爬取,所以我这里选择了分类页
这里是斗鱼所以的直播分类,我们可以看到所有的分类全部都在这一页,所以我们只需要把每个分类的地址拿到。
在浏览器中按F12,我们看到
Python爬虫实现获取斗鱼主播信息
Python爬虫实现获取斗鱼主播信息
每个分类都是由
标签写的标签的class为unit,并且含有链接和文本
Python爬虫实现获取斗鱼主播信息
所有我们只需要
def main_wj():
r = requests.get("https://www.douyu.com/directory") #从分类目录读取所有分类的名字和链接地址
r.encoding = 'utf-8'
soup = BeautifulSoup(r.text, 'html.parser') #美丽汤,用于html更加简便
urls = []
names = []
for link in soup.select('.unit '): #分类链接和名字的 class 是unit
urls.append(link.select('a')[0]['href']) #添加链接到urls列表
names.append(link.select('a')[0].text.strip().replace(":", "")) #添加分类名到names列表,
且替换掉名字中的:,避免后面创建文件夹失败
就能够把所有分类(分类名+分类地址)获取到了
下面我们随便进入一个分类中
如果是一般的分页都是 直接在链接中改 id ,但是我们点击第二页后发现,网页的地址没有改变,说明很可能是用JavaScript实现的分页功能,这怎么办呢,如果按照之前的方法只能获取到第一页。下面我们按F12,选中network-XHR,然后点击第二页。
Python爬虫实现获取斗鱼主播信息
我们看到一个2的文件,点击进去
Python爬虫实现获取斗鱼主播信息
我们发现是这个api给刚刚分类页面提供的数据
Python爬虫实现获取斗鱼主播信息
所有我们只需要从这个api,就能够获取所有的,信息了
我们发现这个链接,就两个参数,2_350,2,很明显可能看出,后面的2是第2页,不信的可以,点击3验证一下,那么2_350就是表示分类了,那么还有一个问题需要确定,就是一共有多少页,现在我们回到第一页,看源码,有一个JavaScript标签
Python爬虫实现获取斗鱼主播信息
rk_=”2_350”,就是分类 count = “5”,是总页数,
所以后面我们只需要提取这两个参数就行
def write_info(a1,a2,name): # a1 分类接口编号 a2 分类页数 name 分类名
os.mkdir("F:\yusheng\"+name) #以分类名创建目录,F:盘的yusheng文件夹下
global num # 初始化全局变量 用于统计主播数量
num = 1
for x in range(int(a2[0])): # 循环写入每一页的信息
getUrl_wj("/gapi/rkc/directory/" + str(a1[0]) + "/" + str(x + 1), name)
print("当前完成分类:"+name)
下面是在每个api分类中提取数据就简单了,只需要用个正则表达式就行了
def getUrl_wj(url,name): #接口url ,分类名
res = requests.get("https://www.douyu.com"+url)
res.encoding = 'utf-8'
ze = '"rid":(.?),"rn":".?","uid":.?,"nn":"(.?)"' #rid = 房间号 nn = 主播名
s = re.findall(ze, res.text) #获得主播的房间号 和 名字
global num
f = open("F:\\yusheng\\"+name+"\\zhubo.txt","a") #以追加的模式打开文件txt文件
for x in s:
t = list(x)
try:
f.write(str(t[0])+"\t\t"+str(t[1])+"\t\t"+str(num)+"\n") #写入信息,防止编码异常的问题,这里try一下
num+=1
except UnicodeEncodeError:
continue
f.close() #关闭文件
以上就是全部的过程了,仔细的朋友可能会发现一点不足,这只能获取在线的。第一次爬取,有不足之处,望见谅,也欢迎大家的批评指正,下面是完整代码:
from bs4 import BeautifulSoup #美丽汤 ,可以很好的读取html标签,本来想练练这个的,可是后来发现用到不到,情况特殊
import requests
import re
import os
def getUrl_wj(url,name): #接口url ,分类名
res = requests.get("https://www.douyu.com"+url)
res.encoding = 'utf-8'
ze = '"rid":(.*?),"rn":".*?","uid":.*?,"nn":"(.*?)"' #rid = 房间号 nn = 主播名
s = re.findall(ze, res.text) #获得主播的房间号 和 名字
global num
f = open("F:\\\\yusheng\\\\"+name+"\\\\zhubo.txt","a") #以追加的模式打开文件txt文件
for x in s:
t = list(x)
try:
f.write(str(t[0])+"\t\t"+str(t[1])+"\t\t"+str(num)+"\n") #写入信息,防止编码异常的问题,这里try一下
num+=1
except UnicodeEncodeError:
continue
f.close() #关闭文件
def getUrl(url):
res = requests.get("https://www.douyu.com" + url) #向指定某分类页发送请求
# 通过接收到的数据,是通过js动态实现多页数据显示的
# 后来通过查看js文件发现他调用了API的接口
# /gapi/rkc/directory/"(分类编号)/(分类页数)
# 所以后面只需要分析接口的数据就行
res.encoding='utf-8'
ze = 'PAGE.rk= "(.*?)";' #指定某个分类的接口编号
ze2 = 'count: "(.*?)",' #指定某个分类的页数
s = re.findall(ze,res.text) #通过正则表达式过滤出信息
s2 =re.findall(ze2,res.text)
return s,s2 #返回 分类接口编号 和 分类页数
def write_info(a1,a2,name): # a1 分类接口编号 a2 分类页数 name 分类名
os.mkdir("F:\\yusheng\\"+name) # 以分类名创建目录
global num # 初始化全局变量 用于统计主播数量
num = 1
for x in range(int(a2[0])): # 循环写入每一页的信息
getUrl_wj("/gapi/rkc/directory/" + str(a1[0]) + "/" + str(x + 1), name)
print("当前完成分类:"+name)
def main_wj():
r = requests.get("https://www.douyu.com/directory") #从分类目录读取所有分类的名字和链接地址
r.encoding = 'utf-8'
soup = BeautifulSoup(r.text, 'html.parser') #美丽汤,用于html更加简便
urls = []
names = []
for link in soup.select('.unit '): #分类链接和名字的 class 是unit
urls.append(link.select('a')[0]['href']) #添加链接到urls列表
names.append(link.select('a')[0].text.strip().replace(":", "")) #添加分类名到names列表,
# 且替换掉名字中的:,避免后面创建文件夹失败
for url, name in zip(urls, names): #循环遍历列表 urls 和 names
a1, a2 = getUrl(url)
write_info(a1, a2, name)
num = 1
main_wj()
Python爬虫实现获取斗鱼主播信息
我发现首页是一些推荐的主播,并不全面,不能全部爬取,所以我这里选择了分类页
这里是斗鱼所以的直播分类,我们可以看到所有的分类全部都在这一页,所以我们只需要把每个分类的地址拿到。
在浏览器中按F12,我们看到
Python爬虫实现获取斗鱼主播信息
Python爬虫实现获取斗鱼主播信息
每个分类都是由
标签写的标签的class为unit,并且含有链接和文本
Python爬虫实现获取斗鱼主播信息
所有我们只需要
def main_wj():
r = requests.get("https://www.douyu.com/directory") #从分类目录读取所有分类的名字和链接地址
r.encoding = 'utf-8'
soup = BeautifulSoup(r.text, 'html.parser') #美丽汤,用于html更加简便
urls = []
names = []
for link in soup.select('.unit '): #分类链接和名字的 class 是unit
urls.append(link.select('a')[0]['href']) #添加链接到urls列表
names.append(link.select('a')[0].text.strip().replace(":", "")) #添加分类名到names列表,
且替换掉名字中的:,避免后面创建文件夹失败
就能够把所有分类(分类名+分类地址)获取到了
下面我们随便进入一个分类中
如果是一般的分页都是 直接在链接中改 id ,但是我们点击第二页后发现,网页的地址没有改变,说明很可能是用JavaScript实现的分页功能,这怎么办呢,如果按照之前的方法只能获取到第一页。下面我们按F12,选中network-XHR,然后点击第二页。
Python爬虫实现获取斗鱼主播信息
我们看到一个2的文件,点击进去
Python爬虫实现获取斗鱼主播信息
我们发现是这个api给刚刚分类页面提供的数据
Python爬虫实现获取斗鱼主播信息
所有我们只需要从这个api,就能够获取所有的,信息了
我们发现这个链接,就两个参数,2_350,2,很明显可能看出,后面的2是第2页,不信的可以,点击3验证一下,那么2_350就是表示分类了,那么还有一个问题需要确定,就是一共有多少页,现在我们回到第一页,看源码,有一个JavaScript标签
Python爬虫实现获取斗鱼主播信息
rk_=”2_350”,就是分类 count = “5”,是总页数,
所以后面我们只需要提取这两个参数就行
def write_info(a1,a2,name): # a1 分类接口编号 a2 分类页数 name 分类名
os.mkdir("F:\yusheng\"+name) #以分类名创建目录,F:盘的yusheng文件夹下
global num # 初始化全局变量 用于统计主播数量
num = 1
for x in range(int(a2[0])): # 循环写入每一页的信息
getUrl_wj("/gapi/rkc/directory/" + str(a1[0]) + "/" + str(x + 1), name)
print("当前完成分类:"+name)
下面是在每个api分类中提取数据就简单了,只需要用个正则表达式就行了
def getUrl_wj(url,name): #接口url ,分类名
res = requests.get("https://www.douyu.com"+url)
res.encoding = 'utf-8'
ze = '"rid":(.?),"rn":".?","uid":.?,"nn":"(.?)"' #rid = 房间号 nn = 主播名
s = re.findall(ze, res.text) #获得主播的房间号 和 名字
global num
f = open("F:\\yusheng\\"+name+"\\zhubo.txt","a") #以追加的模式打开文件txt文件
for x in s:
t = list(x)
try:
f.write(str(t[0])+"\t\t"+str(t[1])+"\t\t"+str(num)+"\n") #写入信息,防止编码异常的问题,这里try一下
num+=1
except UnicodeEncodeError:
continue
f.close() #关闭文件
以上就是全部的过程了,仔细的朋友可能会发现一点不足,这只能获取在线的。第一次爬取,有不足之处,望见谅,也欢迎大家的批评指正,下面是完整代码:
from bs4 import BeautifulSoup #美丽汤 ,可以很好的读取html标签,本来想练练这个的,可是后来发现用到不到,情况特殊
import requests
import re
import os
def getUrl_wj(url,name): #接口url ,分类名
res = requests.get("https://www.douyu.com"+url)
res.encoding = 'utf-8'
ze = '"rid":(.*?),"rn":".*?","uid":.*?,"nn":"(.*?)"' #rid = 房间号 nn = 主播名
s = re.findall(ze, res.text) #获得主播的房间号 和 名字
global num
f = open("F:\\\\yusheng\\\\"+name+"\\\\zhubo.txt","a") #以追加的模式打开文件txt文件
for x in s:
t = list(x)
try:
f.write(str(t[0])+"\t\t"+str(t[1])+"\t\t"+str(num)+"\n") #写入信息,防止编码异常的问题,这里try一下
num+=1
except UnicodeEncodeError:
continue
f.close() #关闭文件
def getUrl(url):
res = requests.get("https://www.douyu.com" + url) #向指定某分类页发送请求
# 通过接收到的数据,是通过js动态实现多页数据显示的
# 后来通过查看js文件发现他调用了API的接口
# /gapi/rkc/directory/"(分类编号)/(分类页数)
# 所以后面只需要分析接口的数据就行
res.encoding='utf-8'
ze = 'PAGE.rk= "(.*?)";' #指定某个分类的接口编号
ze2 = 'count: "(.*?)",' #指定某个分类的页数
s = re.findall(ze,res.text) #通过正则表达式过滤出信息
s2 =re.findall(ze2,res.text)
return s,s2 #返回 分类接口编号 和 分类页数
def write_info(a1,a2,name): # a1 分类接口编号 a2 分类页数 name 分类名
os.mkdir("F:\\yusheng\\"+name) # 以分类名创建目录
global num # 初始化全局变量 用于统计主播数量
num = 1
for x in range(int(a2[0])): # 循环写入每一页的信息
getUrl_wj("/gapi/rkc/directory/" + str(a1[0]) + "/" + str(x + 1), name)
print("当前完成分类:"+name)
def main_wj():
r = requests.get("https://www.douyu.com/directory") #从分类目录读取所有分类的名字和链接地址
r.encoding = 'utf-8'
soup = BeautifulSoup(r.text, 'html.parser') #美丽汤,用于html更加简便
urls = []
names = []
for link in soup.select('.unit '): #分类链接和名字的 class 是unit
urls.append(link.select('a')[0]['href']) #添加链接到urls列表
names.append(link.select('a')[0].text.strip().replace(":", "")) #添加分类名到names列表,
# 且替换掉名字中的:,避免后面创建文件夹失败
for url, name in zip(urls, names): #循环遍历列表 urls 和 names
a1, a2 = getUrl(url)
write_info(a1, a2, name)
num = 1
main_wj()
python爬斗鱼直播房间名和主播名,Python爬虫获取斗鱼主播信息相关推荐
- python爬取自如房间信息(一)
使用python和selenium+Chrome Headless爬取自如房间信息,并将结果存储在MongoDB中.其中最麻烦的应该是每间房的价格,因为自如是用一张图片和offset来显示价格,所以不 ...
- 使用seleniumphantomjs+bs4抓取斗鱼直播房间信息
使用selenium&phantomjs+bs4抓取斗鱼直播房间信息 # -*- coding:utf-8 -*-from selenium import webdriver from bs4 ...
- python爬虫获取肯德基门店信息
python爬虫获取肯德基门店信息 1.在谷歌浏览器中打开肯德基官网,进入餐厅查询页面 2.在搜索框中输入地区并按f12打开开发者工具 发现已经抓取到了一条Ajax请求,可以从中获取请求的url,以及 ...
- python爬斗鱼直播房间名和主播名_斗鱼爬虫,爬取颜值频道的主播图片和名字
在斗鱼的界面中,如果滚动条没有拉下去,那么下面的图片都只是一条鱼的图片,所以要使浏览器自动拉动滚动条,可以用到python的selenium库, 1.配置浏览器 要使用selenium,还需要安装 c ...
- python爬取直播_python selenium爬取斗鱼所有直播房间信息过程详解
还是分析一下大体的流程: 发现所有房间的信息都是保存在一个无序列表中的li中,所以我们可以先获取一个装有li的element对象的列表,然后在对每个element逐一操作 分析斗鱼的翻页,有一个下一页 ...
- python 爬取直播弹幕视频_调用斗鱼API爬取直播间弹幕信息(用户昵称及弹幕内容)...
调用斗鱼API爬取直播间弹幕信息(用户昵称及弹幕内容) 查看<斗鱼弹幕服务器第三方接入协议v1.4.1>,了解斗鱼API的使用方法,即如何连接斗鱼弹幕服务器.维持连接及获取弹幕信息 Pyt ...
- 经典爬虫学习(四)-selsenium实现斗鱼直播房间信息爬取
本案例中通过两种不同的selenium作用实现了对斗鱼直播平台的房间信息进行多页爬取. selenium实现信息爬取以及页面跳转功能 selenium实现页面跳转功能,lxml解析库实现数据爬取功能 ...
- Python爬虫获取斗鱼主播信息
感谢参考原文-http://bjbsair.com/2020-03-27/tech-info/7150.html 下面我们进入正题 首先 我们进入斗鱼的官网 我发现首页是一些推荐的主播,并不全面,不能 ...
- python爬取直播礼物信息_python爬行虎牙弹幕礼品资料,爬取,礼物,数据
查看官方文档 官方文档链接:https://dev.huya.com/docs#/%E5%BC%80%E6%94%BEAPI%E6%8E%A5%E5%85%A5%E8%AF%B4%E6%98%8E 会 ...
- 基于selenium的斗鱼直播房间详细信息自动化爬虫
from selenium import webdriver import time #导入 ActionChains 类 from selenium.webdriver import ActionC ...
最新文章
- 删除中间结点(直接用来当前节点操作)
- densenet tensorflow 中文汉字手写识别
- 智能布线系统,“智”在何方
- android 关闭蓝牙打电话功能,Android蓝牙开发【八】hfp接听、挂断电话
- MySQL 修改视图
- 使用CSS和JQuery,模拟超链接的用户单击事件
- 【HeadFirst设计模式——开篇】
- TensorFlow基础篇(七)——tf.nn.conv2d()
- 美赛整理之Matlab的工程数学计算学习笔记(高等数学)
- 《YOLO系列原理实战笔记》高清.pdf
- 极大似然估计(MLE)
- Matlab 2015b安装教程
- 一名优秀项目经理需具备的五种基本素质及八大管理技能
- C#MySql.Data报错Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
- MacBook常用快捷键总结
- urho3D 运动逆解Inverse Kinematics
- 网络安全中的NISP-SO安全运维工程师都需要那些工具?
- 推荐几个ai生成绘画软件给你
- Redisson闭锁
- 使用VS Code开发AngularJS 2 第一个应用程序
热门文章
- Ubuntu安装WebStorm
- 什么是自然语言处理(NLP)?
- 内外双修,人剑合璧——IT运维人员的九阳神功(大结局)
- IMF传奇行动第85课:Spark Streaming第四课:基于HDFS的Spark Streaming案例实战和内幕源码解密
- RxJava 学习笔记(七) --- Filtering 过滤操作
- 手机wifi显示连接到服务器地址,手机连接路由器wifi上网总是提示正在获取IP地址怎么办...
- 麻将开金算法java代_通用麻将胡牌算法
- 【matlab实现股票量化分析收盘价曲线作图-附源码】
- 清除计算机策略,利用组策略清除历史记录
- C语言main函数参数[转:C语言中文网]