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数据结构之图深度优先和广度优先实例详解
Jul 08 Python
让python在hadoop上跑起来
Jan 27 Python
python @property的用法及含义全面解析
Feb 01 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
Apr 10 Python
numpy返回array中元素的index方法
Jun 27 Python
Python去除字符串前后空格的几种方法
Mar 04 Python
python 图片二值化处理(处理后为纯黑白的图片)
Nov 01 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
Mar 09 Python
python里的单引号和双引号的有什么作用
Jun 17 Python
python time()的实例用法
Nov 03 Python
Pandas中两个dataframe的交集和差集的示例代码
Dec 13 Python
python实现手机推送 代码也就10行左右
Apr 12 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
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
php !function_exists("T7FC56270E7A70FA81A5935B72EACBE29"))代码解密
2011/01/07 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
2013/06/21 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
Yii2选项卡的简单使用
2017/05/26 PHP
php strftime函数的详细用法
2018/06/21 PHP
Javascript 检测、添加、移除样式(className)函数代码
2009/09/08 Javascript
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
js css后面所带参数含义介绍
2013/08/18 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
Javascript继承机制详解
2017/05/30 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
详解nuxt路由鉴权(express模板)
2018/11/21 Javascript
Python异常处理总结
2014/08/15 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
2020/05/20 Python
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
2019年Java面试必问之经典试题
2012/09/12 面试题
教师推荐信范文
2013/11/24 职场文书
《长相思》听课反思
2014/04/10 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
副校长竞聘演讲稿
2014/09/01 职场文书
初三语文教学计划
2015/01/22 职场文书
紫日观后感
2015/06/05 职场文书
贫困证明书范文
2015/06/16 职场文书
行政处罚告知书
2015/07/01 职场文书