下面我们进入正题 首先 我们进入斗鱼的官网

我发现首页是一些推荐的主播,并不全面,不能全部爬取,所以我这里选择了分类页

这里是斗鱼所以的直播分类,我们可以看到所有的分类全部都在这一页,所以我们只需要把每个分类的地址拿到。

在浏览器中按F12,我们看到

每个分类都是由

标签写的标签的class为unit,并且含有链接和文本

所有我们只需要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,然后点击第二页。

我们看到一个2的文件,点击进去

我们发现是这个api给刚刚分类页面提供的数据

所有我们只需要从这个api,就能够获取所有的,信息了

我们发现这个链接,就两个参数,2_350,2,很明显可能看出,后面的2是第2页,不信的可以,点击3验证一下,那么2_350就是表示分类了,那么还有一个问题需要确定,就是一共有多少页,现在我们回到第一页,看源码,有一个JavaScript标签

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爬虫实现获取斗鱼主播信息相关推荐

  1. 编程python爬取网页数据教程_实例讲解Python爬取网页数据

    一.利用webbrowser.open()打开一个网站: >>> import webbrowser >>> webbrowser.open('http://i.f ...

  2. python爬斗鱼直播数据图片_Python爬取2000万直播数据——看20万游戏主播能否月入100万...

    原标题:Python爬取2000万直播数据--看20万游戏主播能否月入100万 她那时候还太年轻,不知道命运赠送的礼物,早已暗中标好了价格. --茨威格 社会在发展,时代在进步.伴随着未曾停息的拥护声 ...

  3. python 爬取直播弹幕视频_调用斗鱼API爬取直播间弹幕信息(用户昵称及弹幕内容)...

    调用斗鱼API爬取直播间弹幕信息(用户昵称及弹幕内容) 查看<斗鱼弹幕服务器第三方接入协议v1.4.1>,了解斗鱼API的使用方法,即如何连接斗鱼弹幕服务器.维持连接及获取弹幕信息 Pyt ...

  4. python爬取表格数据匹配_爬取表格类网站数据并保存为excel文件

    本文转载自以下网站:50 行代码爬取东方财富网上市公司 10 年近百万行财务报表数据 https://www.makcyun.top/web_scraping_withpython6.html 主要学 ...

  5. python爬取b站评论_学习笔记(1):写了个python爬取B站视频评论的程序

    学习笔记(1):写了个python爬取B站视频评论的程序 import requests import json import os table='fZodR9XQDSUm21yCkr6zBqiveY ...

  6. python爬取网页数据流程_基于Python爬取fofa网页端数据过程解析

    FOFA-网络空间安全搜索引擎是网络空间资产检索系统(FOFA)是世界上数据覆盖更完整的IT设备搜索引擎,拥有全球联网IT设备更全的DNA信息.探索全球互联网的资产信息,进行资产及漏洞影响范围分析.应 ...

  7. python爬取股票实时价格_【美股量化00篇】Python获取新浪接口美股实时数据

    1.本篇以BABA(阿里巴巴)为例,在浏览器地址栏输入以下url,即可获取个股数据: http://hq.sinajs.cn/list=gb_baba (股票代码必须为小写字母,结果如下图所示) 阿里 ...

  8. python docx 合并文档 图片_不再为处理PDF烦恼,python处理操作PDF全攻略

    本篇聊下Python对pdf的各种操作,包含pdf转word,pdf转图片,pdf翻转,加密,加水印等. pdf转换word文档 保留格式 pdf转换为word文档,被大众经常使用的是纯Python库 ...

  9. python爬取微博数据词云_用Python爬取微博数据生成词云图片

    原标题:用Python爬取微博数据生成词云图片 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业智能BI.大数 ...

  10. 使用 Selenium 爬取斗鱼直播数据(2019最新)

    环境:Win10  需要安装 Chromedriver Chromedriver下载(需对应浏览器的版本) 这些是我最近在学 selenium 模块爬取得斗鱼直播数据,以下爬取的是 图片.详情地址.标 ...

最新文章

  1. 在 App Store 三年學到的 13 件事(下)
  2. Spring 中的内部bean 和集合
  3. SQL Server-外部联接基础回顾(十三)
  4. element UI中的select选择器的change方法需要传递多个值
  5. android 捕捉home键
  6. IMP 导入数据报错 OCI-21500 OCI-22275
  7. [Python3] 023 面向对象 第三弹
  8. hash hmac java_认证加密算法php hash_hmac和java hmacSha1的问题
  9. oracle下载jdk需要注册怎么办? jdk8下载
  10. Charles弱网测试
  11. 怎么连接win10共享计算机,xp系统下怎么连接win10共享的打印机
  12. 生物(一)ctDNA突变检测应用于肿瘤早期筛查
  13. 计算机维护费入什么会计科目,​系统维护费记入什么会计科目
  14. 手机视频监控直播系统是如何实现的?需要满足哪些条件?
  15. Java基础之MySQL数据库与JDBC
  16. QT之SQLITE3数据库
  17. 【设计相关】UML类图和时序图介绍
  18. scaner 从外网到内网域渗透
  19. python基于PHP+MySQL的学生社团管理系统
  20. java架构模式与设计模式(三)--事件风暴

热门文章

  1. A protocol for Dying
  2. 结合可变形注意力的视觉Transformer
  3. 敏捷开发之极限编程(XP)概念
  4. ecshop2.7.3 支付宝alipay官方电脑手机H5新版支付接口支持异步回调
  5. Handler到底是一个什么东东
  6. asp二进制mysql_asP 读取二进制数据库
  7. 计算机类部分核心期刊说明
  8. 数据库 PK,NN,UQ,AI,BIN,UN,ZF等的含义 记录
  9. 如何解决Mac电脑在启动时出现空白屏幕的情况?
  10. 数据分析——员工离职预测