爬取斗鱼直播所有房间的翻页功能的实现
前面我们已经实现了斗鱼直播单页房间数据的爬取,
具体代码实现在我的博客:https://blog.csdn.net/g_optimistic/article/details/89944897
现在只讲翻页操作,以下有两种方法:
目录
1.使用无界面浏览器 Selenium 与PantomJS的结合
2.ajax异步请求,重点是找到接口
1.使用无界面浏览器 Selenium 与PantomJS的结合
当点击下一页的时候,如下图找到的那个标签 li 的属性 aria-disabled="true"的时候,就没有下一页了。
代码实现:
from selenium import webdriver
from lxml import etree
import timedef get_data(content):tree = etree.HTML(content)li_list = tree.xpath('//ul[@class="layout-Cover-list"]/li')print(len(li_list))i = 0for li in li_list:i += 1print('===================第%s个房间======================' % i)room_name = li.xpath('.//h3[@class="DyListCover-intro"]/text()')print("房间名称", room_name[0])room_tag = li.xpath('.//span[@class="DyListCover-zone"]/text()')print("房间标签:", room_tag[0])room_player = li.xpath('.//h2[@class="DyListCover-user"]/text()')print("主播:", room_player[0])room_follows = li.xpath('.//span[@class="DyListCover-hot"]/text()')print("关注数:", room_follows[0])return tree# 创建浏览器
driver = webdriver.PhantomJS()
# 1.访问首页
page = 1
driver.get('https://www.douyu.com/directory/all')
time.sleep(5)
# 2.解析页面
tree = get_data(driver.page_source)while True:if tree.xpath('//li[@class=" dy-Pagination-next"]/@aria-disabled="true"') == 'true':breakdriver.find_element_by_class_name(' dy-Pagination-next').click()time.sleep(3)get_data(driver.page_source)page += 1print(page)
2.ajax异步请求,重点是找到接口
每次点击页数的时候,就会在network出现如下的XHR里面的文件,很有可能就写着和分页有关的东西
点开一个文件,看看他的请求头:得出以下规律
真正分页的接口是: 'https://www.douyu.com/gapi/rkc/directory/0_0/%s' % 页数
找到接口之后,看一下他的response的内容:
开始请求,代码如下:
import requestspage = 0
while True:page += 1print('-------------------------第%s页-----------------------------------------------------------------------------------------' % page)url = 'https://www.douyu.com/gapi/rkc/directory/0_0/%s' % pageheaders = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'}response = requests.get(url=url, headers=headers)with open('templates\\douyu1.txt', 'w', encoding='utf-8') as fp:fp.write(response.content.decode('utf-8'))data_list = response.json()['data']['rl']print("该页共查询到%s个房间" % len(data_list))i = 0for data in data_list:i += 1print("第%s个房间++++++++++++++++++++++++++++++++++++++++" % i)room_name = data['rn']room_tag = data['c2name']room_player = data['nn']room_follows = data['ol']print("房间名称:", room_name)print("主播:", room_player)print("房间标签:", room_tag)print("关注数:", room_follows)
爬取斗鱼直播所有房间的翻页功能的实现相关推荐
- 使用selenium自动爬取斗鱼直播平台的所有房间信息
使用selenium自动爬取斗鱼直播平台的所有房间信息 文章目录 使用selenium自动爬取斗鱼直播平台的所有房间信息 使用selenium实现动态页面模拟点击 什么是selenium? selen ...
- 实时爬取斗鱼直播时的弹幕消息
最近想爬取实时消息,上网查了下,所以爬取斗鱼直播的弹幕消息做了下练习,这个开源的代码有很多,但是具体是怎么爬取到的还是要仔细地研究下.想爬取斗鱼的弹幕消息,按照常用的做法是打开网页用抓包工具抓包,但是 ...
- Python爬取斗鱼直播网站信息
一.需求 爬取斗鱼直播网站信息,如直播名字.主播名字.热度.图片和房间网址,将这些数据保存到csv文件中,并单独创建文件夹保存图片. 斗鱼直播网址:https://www.douyu.com/g_LO ...
- Python爬取斗鱼直播信息
一.需求 爬取斗鱼直播网站信息,如直播名字.主播名字.热度.图片和房间网址,将这些数据保存到csv文件中,并单独创建文件夹保存图片. 斗鱼直播网址:https://www.douyu.com/g_LO ...
- Requests爬取斗鱼直播列表信息
实现简单小爬虫,爬取斗鱼直播页面所有当前在线直播列表信息 文章目录 1 目标分析 2 分析URL 2.1 分析首页URL 2.2 分析换页URL 2.3 确定爬取URL 3 代码 4 总结 1 目标分 ...
- 使用scrapy爬取斗鱼直播间信息
目录 1. 谷歌抓包工具的使用 1.1 打开Chrome开发者工具的方法 1.2 开发者工具的结构 1.3 network模块 2. 使用谷歌抓包工具抓取斗鱼数据 3. 使用scrapy爬取斗鱼直播间 ...
- python selenium加bs4批量爬取斗鱼直播信息
from selenium import webdriver from bs4 import BeautifulSoup import time # 返回Phantomjs对象 driver = we ...
- 利用斗鱼api学习爬取斗鱼直播间信息
python爬取斗鱼房间的弹幕 斗鱼弹幕服务api:https://open.douyu.com/source/api/63 基本步骤: 连接斗鱼api服务器 构造登录请求 进入房间并构造获取弹幕请求 ...
- 利用Python爬虫爬取斗鱼直播间信息,以及直播的实际人数!
首先我准备利用mysql来存储我爬取的信息,建一个host表如下: 然后下载pymysql ,利用它与数据库链接,因为在这里我只涉及到写入的操作: Unit_Mtsql 然后就是使用Beautiful ...
最新文章
- 如何读取jar包外的properties和log4j.properties等配置文件
- [MetalKit]2-Using-MetalKit-part-1使用MetalKit1
- Spring常见注解
- 用79种语言说爱琪琪格
- 如何用SendMessage模拟某一按钮的点击事件
- Scala键盘录入代码示例
- hmm 求隐藏序列_结巴分词3--基于汉字成词能力的HMM模型识别未登录词
- C# override详解
- FHS(Filesystem Hierarchy Standard 文件系统层次化标准)
- git pull 失败 ,提示:fatal: refusing to merge unrelated histories
- 【转】java基础知识总结
- android自定义广播实现app完全退出
- 计算机应用技术和cad,计算机图形技术与CAD
- 锁定计算机还能远程控制,我的电脑可能被远程控制
- ATX电源接口定义及颜色定义 (转载)
- ae合成设置快捷键_AE设计首选快捷键大全+解析
- 【coq】函数语言设计 笔记 01 - basics
- 爱回收提交订单一直显示服务器来小差,京东的爱回收太垃圾,千万不要用。
- RN实现手机摇一摇功能
- 热血篮球维修服务器是怎么回事,新浪《热血篮球》10月30日停服维护及更新公告...
热门文章
- sql查询排行获取列表行号
- 【IDEA 教程系列第 11 篇】idea 搜索当前文件中的指定内容
- 6 android QMI机制---Modem消息接收
- 用canvas实现雨滴效果
- 2021年PMP退考的流程是怎样的?
- arm开发板采用ubuntu根文件系统自动挂载U盘解决方案升级版!
- vscode github copilot 报错 unable to verify the first certificate.解决方案
- 如何打好考博英语的攻坚战
- [TJOI2018]数学计算
- 福禄克Fluke-190-504 ScopeMeter 彩色数字示波表F190-504S