python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解


Posted in Python onDecember 22, 2020

基本思路:

首先用开发者工具找到需要提取数据的标签列

python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解

利用xpath定位需要提取数据的列表

python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解

然后再逐个提取相应的数据:

python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解

保存数据到csv:

python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解

利用开发者工具找到下一页按钮所在标签:

python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解

利用xpath提取此标签对象并返回:

python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解

调用点击事件,并循环上述过程:

python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解

最终效果图:

python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解

代码:

from selenium import webdriver
import time
import re

class Douyu(object):

  def __init__(self):
    # 开始时的url
    self.start_url = "https://www.douyu.com/directory/all"
    # 实例化一个Chrome对象
    self.driver = webdriver.Chrome()
    # 用来写csv文件的标题
    self.start_csv = True

  def __del__(self):
    self.driver.quit()

  def get_content(self):
    # 先让程序两秒,保证页面所有内容都可以加载出来
    time.sleep(2)
    item = {}
    # 获取进入下一页的标签
    next_page = self.driver.find_element_by_xpath("//span[text()='下一页']/..")
    # 获取用于判断是否是最后一页的属性
    is_next_url = next_page.get_attribute("aria-disabled")
    # 获取存储信息的所有li标签的列表
    li_list = self.driver.find_elements_by_xpath("//ul[@class='layout-Cover-list']//li")
    
    # 提取需要的数据
    for li in li_list:
      
      item["user-id"] = li.find_element_by_xpath(".//div[@class='DyListCover-userName']").text
      item["img"] = li.find_element_by_xpath(".//div[@class='DyListCover-imgWrap']//img").get_attribute("src")
      item['class-name'] = li.find_element_by_xpath(".//span[@class='DyListCover-zone']").text
      item["click-hot"] = li.find_element_by_xpath(".//span[@class='DyListCover-hot']").text
      item["click-hot"] = re.sub(r'\n','',item['click-hot'])
      
      # 保存数据
      self.save_csv(item)
    
    # 返回是否有下一页和下一页的点击事件的标签,
    return next_page,is_next_url

  def save_csv(self,item):
    # 将提取存放到csv文件中的内容连接为csv格式文件
    str = ','.join([i for i in item.values()])

    with open('./douyu.csv','a',encoding='utf-8') as f:
      if self.start_csv:
        f.write("用户id,image,所属类,点击热度\n")
        self.start_csv = False
      # 将字符串写入csv文件
      f.write(str)
      f.write('\n')
    print("save success")

  def run(self):
    # 启动chrome并定位到相应页面
    self.driver.get(self.start_url)

    while True:
      # 开始提取数据,并获取下一页的元素
      next_page,is_next = self.get_content()
      if is_next!='false':
        break
      # 点击下一页
      next_page.click()

if __name__=='__main__':
  douyu_spider = Douyu()
  douyu_spider.run()

到此这篇关于python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解的文章就介绍到这了,更多相关python爬虫实现自动翻页爬取某鱼数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中用Spark模块的使用教程
Apr 13 Python
Python实现线程池代码分享
Jun 21 Python
Python中的字典与成员运算符初步探究
Oct 13 Python
python目录与文件名操作例子
Aug 28 Python
通过Python 获取Android设备信息的轻量级框架
Dec 18 Python
python 寻找list中最大元素对应的索引方法
Jun 28 Python
python实现推箱子游戏
Mar 25 Python
关于Python3 类方法、静态方法新解
Aug 30 Python
OpenCV模板匹配matchTemplate的实现
Oct 18 Python
Python socket聊天脚本代码实例
Jan 02 Python
Pycharm在指定目录下生成文件和删除文件的实现
Dec 28 Python
Python中递归以及递归遍历目录详解
Oct 24 Python
Django中ORM的基本使用教程
Dec 22 #Python
python通用数据库操作工具 pydbclib的使用简介
Dec 21 #Python
Python 多进程原理及实现
Dec 21 #Python
python-图片流传输的思路及示例(url转换二维码)
Dec 21 #Python
python 用pandas实现数据透视表功能
Dec 21 #Python
python 生成正态分布数据,并绘图和解析
Dec 21 #Python
python statsmodel的使用
Dec 21 #Python
You might like
ftp类(myftp.php)
2006/10/09 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
js的闭包的一个示例说明
2008/11/18 Javascript
用js实现控件的隐藏及style.visibility的使用
2013/06/14 Javascript
javascript中clone对象详解
2014/12/03 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
jQuery.prop() 使用详解
2015/07/19 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
jQuery简易时光轴实现方法示例
2017/03/13 Javascript
原生JS京东轮播图代码
2017/03/22 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
JS实现简单获取最近7天和最近3天日期的方法
2018/04/18 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
2019/03/13 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
vue编写简单的购物车功能
2021/01/08 Vue.js
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
Python使用ftplib实现简易FTP客户端的方法
2015/06/03 Python
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
Python利用神经网络解决非线性回归问题实例详解
2019/07/19 Python
解决Jupyter无法导入已安装的 module问题
2020/04/17 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
python3 中使用urllib问题以及urllib详解
2020/08/03 Python
玩具反斗城葡萄牙官方商城:Toys"R"Us葡萄牙
2016/10/21 全球购物
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
2015年党员创先争优公开承诺书
2015/04/27 职场文书
2015年试用期工作总结范文
2015/05/28 职场文书
教你如何用cmd快速登录服务器
2022/06/10 Servers