前面我们已经实现了斗鱼直播单页房间数据的爬取,

具体代码实现在我的博客: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)

爬取斗鱼直播所有房间的翻页功能的实现相关推荐

  1. 使用selenium自动爬取斗鱼直播平台的所有房间信息

    使用selenium自动爬取斗鱼直播平台的所有房间信息 文章目录 使用selenium自动爬取斗鱼直播平台的所有房间信息 使用selenium实现动态页面模拟点击 什么是selenium? selen ...

  2. 实时爬取斗鱼直播时的弹幕消息

    最近想爬取实时消息,上网查了下,所以爬取斗鱼直播的弹幕消息做了下练习,这个开源的代码有很多,但是具体是怎么爬取到的还是要仔细地研究下.想爬取斗鱼的弹幕消息,按照常用的做法是打开网页用抓包工具抓包,但是 ...

  3. Python爬取斗鱼直播网站信息

    一.需求 爬取斗鱼直播网站信息,如直播名字.主播名字.热度.图片和房间网址,将这些数据保存到csv文件中,并单独创建文件夹保存图片. 斗鱼直播网址:https://www.douyu.com/g_LO ...

  4. Python爬取斗鱼直播信息

    一.需求 爬取斗鱼直播网站信息,如直播名字.主播名字.热度.图片和房间网址,将这些数据保存到csv文件中,并单独创建文件夹保存图片. 斗鱼直播网址:https://www.douyu.com/g_LO ...

  5. Requests爬取斗鱼直播列表信息

    实现简单小爬虫,爬取斗鱼直播页面所有当前在线直播列表信息 文章目录 1 目标分析 2 分析URL 2.1 分析首页URL 2.2 分析换页URL 2.3 确定爬取URL 3 代码 4 总结 1 目标分 ...

  6. 使用scrapy爬取斗鱼直播间信息

    目录 1. 谷歌抓包工具的使用 1.1 打开Chrome开发者工具的方法 1.2 开发者工具的结构 1.3 network模块 2. 使用谷歌抓包工具抓取斗鱼数据 3. 使用scrapy爬取斗鱼直播间 ...

  7. python selenium加bs4批量爬取斗鱼直播信息

    from selenium import webdriver from bs4 import BeautifulSoup import time # 返回Phantomjs对象 driver = we ...

  8. 利用斗鱼api学习爬取斗鱼直播间信息

    python爬取斗鱼房间的弹幕 斗鱼弹幕服务api:https://open.douyu.com/source/api/63 基本步骤: 连接斗鱼api服务器 构造登录请求 进入房间并构造获取弹幕请求 ...

  9. 利用Python爬虫爬取斗鱼直播间信息,以及直播的实际人数!

    首先我准备利用mysql来存储我爬取的信息,建一个host表如下: 然后下载pymysql ,利用它与数据库链接,因为在这里我只涉及到写入的操作: Unit_Mtsql 然后就是使用Beautiful ...

最新文章

  1. 如何读取jar包外的properties和log4j.properties等配置文件
  2. [MetalKit]2-Using-MetalKit-part-1使用MetalKit1
  3. Spring常见注解
  4. 用79种语言说爱琪琪格
  5. 如何用SendMessage模拟某一按钮的点击事件
  6. Scala键盘录入代码示例
  7. hmm 求隐藏序列_结巴分词3--基于汉字成词能力的HMM模型识别未登录词
  8. C# override详解
  9. FHS(Filesystem Hierarchy Standard 文件系统层次化标准)
  10. git pull 失败 ,提示:fatal: refusing to merge unrelated histories
  11. 【转】java基础知识总结
  12. android自定义广播实现app完全退出
  13. 计算机应用技术和cad,计算机图形技术与CAD
  14. 锁定计算机还能远程控制,我的电脑可能被远程控制
  15. ATX电源接口定义及颜色定义 (转载)
  16. ae合成设置快捷键_AE设计首选快捷键大全+解析
  17. 【coq】函数语言设计 笔记 01 - basics
  18. 爱回收提交订单一直显示服务器来小差,京东的爱回收太垃圾,千万不要用。
  19. RN实现手机摇一摇功能
  20. 热血篮球维修服务器是怎么回事,新浪《热血篮球》10月30日停服维护及更新公告...

热门文章

  1. sql查询排行获取列表行号
  2. 【IDEA 教程系列第 11 篇】idea 搜索当前文件中的指定内容
  3. 6 android QMI机制---Modem消息接收
  4. 用canvas实现雨滴效果
  5. 2021年PMP退考的流程是怎样的?
  6. arm开发板采用ubuntu根文件系统自动挂载U盘解决方案升级版!
  7. vscode github copilot 报错 unable to verify the first certificate.解决方案
  8. 如何打好考博英语的攻坚战
  9. [TJOI2018]数学计算
  10. 福禄克Fluke-190-504 ScopeMeter 彩色数字示波表F190-504S