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的模型中执行原始SQL查询的方法
Jul 21 Python
python+matplotlib绘制旋转椭圆实例代码
Jan 12 Python
python根据unicode判断语言类型实例代码
Jan 17 Python
通过Pandas读取大文件的实例
Jun 07 Python
python time.sleep()是睡眠线程还是进程
Jul 09 Python
Django项目主urls导入应用中views的红线问题解决
Aug 10 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
Mar 14 Python
Python求凸包及多边形面积教程
Apr 12 Python
简单了解python列表和元组的区别
May 14 Python
Python命令行参数argv和argparse该如何使用
Feb 08 Python
python 装饰器重要在哪
Feb 14 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
解析dedecms空间迁移步骤详解
2013/05/15 PHP
PHP7.1新功能之Nullable Type用法分析
2016/09/26 PHP
php使用curl实现简单模拟提交表单功能
2017/05/15 PHP
Js callBack 返回前一页的js方法
2008/11/30 Javascript
JS option location 页面跳转实现代码
2008/12/27 Javascript
js更优雅的兼容
2010/08/12 Javascript
jQuery 对Select的操作备忘记录
2011/07/04 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
jQuery中scrollTop()方法用法实例
2015/01/16 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
Node.js实现文件上传的示例
2017/06/28 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
2018/03/03 Javascript
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
解决vue热替换失效的根本原因
2018/09/19 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
python正则表达式的使用
2017/06/12 Python
Python实现自动发送邮件功能
2021/03/02 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
2018/04/26 Python
python 字符串和整数的转换方法
2018/06/25 Python
Python面向对象基础入门之设置对象属性
2018/12/11 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
python plotly绘制直方图实例详解
2019/07/22 Python
python正则爬取某段子网站前20页段子(request库)过程解析
2019/08/10 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
Mac PyCharm中的.gitignore 安装设置教程
2020/04/16 Python
纯css3(无图片/js)制作的几个社交媒体网站的图标
2013/03/21 HTML / CSS
具有防紫外线功能的高性能钓鱼服装:Hook&Tackle
2018/08/16 全球购物
工商管理应届生求职信
2013/10/07 职场文书
春节晚会主持词
2014/03/24 职场文书
施工安全协议书范本
2014/09/26 职场文书
受资助学生感谢信
2015/01/21 职场文书