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 命令行参数sys.argv
Sep 06 Python
python中类的一些方法分析
Sep 25 Python
Django 多语言教程的实现(i18n)
Jul 07 Python
Django 重写用户模型的实现
Jul 29 Python
python定位xpath 节点位置的方法
Aug 27 Python
Django shell调试models输出的SQL语句方法
Aug 29 Python
python中提高pip install速度
Feb 14 Python
Python找出列表中出现次数最多的元素三种方式
Feb 24 Python
Django之腾讯云短信的实现
Jun 12 Python
Python常用数字处理基本操作汇总
Sep 10 Python
python对输出的奇数偶数排序实例代码
Dec 04 Python
使用Python封装excel操作指南
Jan 29 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
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
深入理解PHP中的global
2014/08/19 PHP
PHP实现搜索相似图片
2015/09/22 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
2017/06/16 PHP
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
js闭包引起的事件注册问题介绍
2016/03/29 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
2018/02/28 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
python实现的一个火车票转让信息采集器
2014/07/09 Python
Python实现的批量下载RFC文档
2015/03/10 Python
python+numpy实现的基本矩阵操作示例
2019/07/19 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
python等差数列求和公式前 100 项的和实例
2020/02/25 Python
Pandas的Apply函数具体使用
2020/07/21 Python
初级会计求职信范文
2014/02/15 职场文书
党的群众路线教育实践活动心得体会
2014/03/03 职场文书
焦裕禄精神心得体会
2014/09/02 职场文书
保证书格式
2015/01/16 职场文书
青年联谊会致辞
2015/07/31 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang
python flask开发的简单基金查询工具
2021/06/02 Python
Python 中的单分派泛函数你真的了解吗
2021/06/22 Python