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实现倒计时的示例
Feb 14 Python
Python对象体系深入分析
Oct 28 Python
python实现颜色rgb和hex相互转换的函数
Mar 19 Python
Python使用微信SDK实现的微信支付功能示例
Jun 30 Python
TensorFlow实现MLP多层感知机模型
Mar 09 Python
教你使用python实现微信每天给女朋友说晚安
Mar 23 Python
对python中raw_input()和input()的用法详解
Apr 22 Python
Python数据可视化:箱线图多种库画法
Nov 06 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
Python进程Multiprocessing模块原理解析
Feb 28 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
Jul 09 Python
Python tensorflow卷积神经Inception V3网络结构
May 06 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读取大文件示例分享(文件操作类)
2014/04/13 PHP
PHP实现简单登录界面
2019/10/23 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
loading动画特效小结
2017/01/22 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
手把手带你入门微信小程序新框架Kbone的使用
2020/02/25 Javascript
深入解析微信小程序开发中遇到的几个小问题
2020/07/11 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
Python模拟百度登录实例详解
2016/01/20 Python
Python合并字典键值并去除重复元素的实例
2016/12/18 Python
mac下给python3安装requests库和scrapy库的实例
2018/06/13 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
Python使用jupyter notebook查看ipynb文件过程解析
2020/06/02 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
公务员年总结的自我评价
2013/10/25 职场文书
实习单位推荐信范文
2013/11/27 职场文书
军训自我鉴定
2013/12/14 职场文书
安全教育心得体会
2013/12/29 职场文书
庆七一活动方案
2014/01/25 职场文书
大型车展策划方案
2014/02/01 职场文书
财务担保书范文
2014/04/02 职场文书
应届生求职信
2014/05/31 职场文书
民生工作实施方案
2014/05/31 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
【2·13】一图读懂中国无线电发展
2022/02/18 无线电
PyTorch device与cuda.device用法
2022/04/03 Python