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的Flask框架中的signals信号机制
Jun 13 Python
详解如何使用Python编写vim插件
Nov 28 Python
Django如何自定义分页
Sep 25 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
python使用minimax算法实现五子棋
Jul 29 Python
Python PIL图片添加字体的例子
Aug 22 Python
python conda操作方法
Sep 11 Python
python 求定积分和不定积分示例
Nov 20 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
在python中实现求输出1-3+5-7+9-......101的和
Apr 02 Python
推荐值得学习的12款python-web开发框架
Aug 10 Python
Python 代码调试技巧示例代码
Aug 11 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
php数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
Laravel 队列使用的实现
2019/01/08 PHP
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
javascript new 需不需要继续使用
2009/07/02 Javascript
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
2015/11/03 Javascript
微信JS接口大全
2016/08/25 Javascript
JavaScript触发onScroll事件的函数节流详解
2016/12/14 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
Angular简单验证功能示例
2017/12/22 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
2018/05/16 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
JavaScript利用键盘码控制div移动
2020/03/19 Javascript
在Chrome DevTools中调试JavaScript的实现
2020/04/07 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
python+django+rest框架配置创建方法
2019/08/31 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
在阿联酋购买翻新手机和平板电脑:Teckzu
2021/02/12 全球购物
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
2013年员工自我评价范文
2013/12/27 职场文书
信息专业个人的自我评价
2013/12/27 职场文书
七年级生物教学反思
2014/01/30 职场文书
春节晚会主持词
2014/03/24 职场文书
《郑和远航》教学反思
2014/04/16 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
房屋出租委托书格式
2014/09/23 职场文书
税务干部个人整改措施思想汇报
2014/10/10 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
小学庆六一主持词
2015/06/30 职场文书
导游词之湖北武当山
2019/09/23 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书