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 相关文章推荐
Django 添加静态文件的两种实现方法(必看篇)
Jul 14 Python
python图像常规操作
Nov 11 Python
Python3 串口接收与发送16进制数据包的实例
Jun 12 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
Jun 28 Python
Python Web框架之Django框架Form组件用法详解
Aug 16 Python
python快速排序的实现及运行时间比较
Nov 22 Python
Python imageio读取视频并进行编解码详解
Dec 10 Python
Django之富文本(获取内容,设置内容方式)
May 21 Python
Python基于traceback模块获取异常信息
Jul 23 Python
python按照list中字典的某key去重的示例代码
Oct 13 Python
Pycharm中如何关掉python console
Oct 27 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
Jun 21 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
基于文本的访客签到簿
2006/10/09 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
PHP远程调试之XDEBUG
2015/12/29 PHP
PHP调用其他文件中的类
2018/04/02 PHP
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
2010/03/11 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
javascript中数组的concat()方法使用介绍
2013/12/18 Javascript
JS模拟实现方法重载示例
2016/08/03 Javascript
JS实现六位字符密码输入器功能
2016/08/19 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
python实现的用于搜索文件并进行内容替换的类实例
2015/06/28 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
python实现截取屏幕保存文件,删除N天前截图的例子
2019/08/27 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
Django数据库迁移常见使用方法
2020/11/12 Python
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
html5 postMessage前端跨域并前端监听的方法示例
2018/11/01 HTML / CSS
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
什么是索引指示器
2012/08/20 面试题
传播学专业毕业生自荐信
2013/11/04 职场文书
最新自我评价范文
2013/11/16 职场文书
财务会计人员岗位职责
2013/11/30 职场文书
自我评价怎么写好呢?
2013/12/05 职场文书
七年级生物教学反思
2014/01/30 职场文书
旷课检讨书3000字
2014/02/04 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
升学宴答谢词
2015/01/05 职场文书
从事会计工作年限证明
2015/06/23 职场文书
投诉信回复范文
2015/07/03 职场文书
vue实现锚点定位功能
2021/06/29 Vue.js
MySQL索引失效场景及解决方案
2022/07/23 MySQL