python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解

作者:孤城暮雨 时间:2021-05-20 08:43:26 

基本思路:

首先用开发者工具找到需要提取数据的标签列

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()

来源:https://www.cnblogs.com/aa1273935919/archive/2020/12/21/14168439.html

标签:python,爬虫,selenium
0
投稿

猜你喜欢

  • python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)

    2021-11-14 06:16:40
  • pycharm打开命令行或Terminal的方法

    2022-12-11 07:07:08
  • python异常的传递知识点总结

    2023-07-12 19:19:58
  • js中bool值的转换及“&&”、“||”、 “!!”详解

    2024-04-19 10:02:01
  • vue学习笔记之动态组件和v-once指令简单示例

    2024-01-01 07:50:52
  • Python Socket编程详细介绍

    2021-01-02 02:56:21
  • python 实现以相同规律打乱多组数据

    2021-09-21 14:28:18
  • Python中的“_args”和“__kwargs”用法详解

    2023-03-11 02:10:38
  • Python使用bar绘制堆积/带误差棒柱形图的实现

    2021-06-26 12:42:05
  • 自定义404错误页面实现自动跳转

    2007-12-10 18:25:00
  • Python叠加两幅栅格图像的实现方法

    2023-07-25 17:14:06
  • 详解Python的数据库操作(pymysql)

    2024-01-15 20:49:22
  • vue.js 实现图片本地预览 裁剪 压缩 上传功能

    2024-05-11 09:11:06
  • 一文带你吃透Python中的os和sys模块

    2022-01-04 20:42:55
  • Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法

    2022-03-10 21:04:56
  • Oracle9i数据库异常关闭后的启动

    2010-07-21 12:46:00
  • 利用python爬取有道词典的方法

    2021-07-08 04:42:05
  • Sql Server 索引使用情况及优化的相关Sql语句分享

    2012-06-06 19:49:36
  • Python中关于set的基本用法

    2021-09-23 12:45:39
  • Python Pytorch深度学习之核心小结

    2021-05-26 20:03:50
  • asp之家 网络编程 m.aspxhome.com