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 list中append()与extend()用法分享
Mar 24 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
Apr 25 Python
利用python画一颗心的方法示例
Jan 31 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 Python
python Flask 装饰器顺序问题解决
Aug 08 Python
python3使用matplotlib绘制条形图
Mar 25 Python
基于树莓派的语音对话机器人
Jun 17 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
Python利用WMI实现ping命令的例子
Aug 14 Python
python3反转字符串的3种方法(小结)
Nov 07 Python
pytorch+lstm实现的pos示例
Jan 14 Python
Python Django搭建网站流程图解
Jun 13 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
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
PHP中cookie和session的区别实例分析
2014/08/28 PHP
php关联数组与索引数组及其显示方法
2018/03/12 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
js中符号转意问题示例探讨
2013/08/19 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
DOM基础教程之事件对象
2015/01/20 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
jquery实现简单实用的打分程序实例
2015/07/23 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
js微信支付实现代码
2016/12/22 Javascript
jQuery实现菜单的显示和隐藏功能示例
2018/07/24 jQuery
JavaScript实现鼠标经过表格某行时此行变色
2020/11/20 Javascript
Python完全新手教程
2007/02/08 Python
Python实现的简单发送邮件脚本分享
2014/11/07 Python
Python中的面向对象编程详解(下)
2015/04/13 Python
Python多线程扫描端口代码示例
2018/02/09 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
2019/04/30 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
Python Pandas中根据列的值选取多行数据
2019/07/08 Python
python如何通过twisted搭建socket服务
2020/02/03 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
英国汽车和货车租赁网站:Hertz英国
2016/09/02 全球购物
SportsDirect.com马来西亚:英国第一体育零售商
2018/11/21 全球购物
中国制造网:Made-in-China.com
2019/10/25 全球购物
家长给幼儿园的表扬信
2014/01/09 职场文书
六十岁生日答谢词
2014/01/10 职场文书
专业技术职务聘任书
2014/03/29 职场文书
活动策划求职信模板
2014/04/21 职场文书
高中学生期末评语
2014/04/25 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
员工手册编写范本
2015/05/14 职场文书