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 相关文章推荐
videocapture库制作python视频高速传输程序
Dec 23 Python
在Python中使用__slots__方法的详细教程
Apr 28 Python
详解python列表生成式和列表生成式器区别
Mar 27 Python
python 寻找离散序列极值点的方法
Jul 10 Python
python @classmethod 的使用场合详解
Aug 23 Python
Python 经典算法100及解析(小结)
Sep 13 Python
关于Django Models CharField 参数说明
Mar 31 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
Jupyter打开图形界面并画出正弦函数图像实例
Apr 24 Python
python连接mysql有哪些方法
Jun 24 Python
Python pymsql模块的使用
Sep 07 Python
python 爬虫如何正确的使用cookie
Oct 27 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
PHPMyadmin 配置文件详解(配置)
2009/12/03 PHP
2017年最新PHP经典面试题目汇总(上篇)
2017/03/17 PHP
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
webpack打包单页面如何引用的js
2017/06/07 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
解决layui 三级联动下拉框更新时回显的问题
2019/09/03 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
vue实现购物车加减
2020/05/30 Javascript
node.js基础知识汇总
2020/08/25 Javascript
python开启多个子进程并行运行的方法
2015/04/18 Python
详谈python http长连接客户端
2017/06/12 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
python实现代码统计程序
2019/09/19 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
使用已经得到的keras模型识别自己手写的数字方式
2020/06/29 Python
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
2020/05/19 HTML / CSS
美国著名的家居用品购物网站:Bed Bath & Beyond
2018/01/05 全球购物
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
党的生日演讲稿
2014/09/10 职场文书
初中学生操行评语
2014/12/26 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript