iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python网络爬虫基于selenium爬取斗鱼直播信息
  • 323
分享到

python网络爬虫基于selenium爬取斗鱼直播信息

2024-04-02 19:04:59 323人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、本文使用的第三方包和工具二、selenium的介绍和浏览器驱动的安装1.selenium的介绍2.浏览器驱动的安装三、代码思路分析1.解析数据的函数2.保存数据的函数3.主函

一、本文使用的第三方包和工具

python 3.8  

谷歌浏览器

selenium(3.141.0)(pip install selenium == 3.141.0)注意4.0系列和3.0系列方法不同

浏览器驱动(和你的浏览器版本对应)

二、selenium的介绍和浏览器驱动的安装

1.selenium的介绍

    selenium是一款WEB自动化测试工具,可以很方便地模拟真实用户对浏览器进行操作,它支持各种主流浏览器:IE、Chrome、Firefox、Safari、Opera等。你可以使用selenium做web测试或者爬虫,自动抢票、自动下单也可以用selenium来做。

2.浏览器驱动的安装

   网上方法很多,友友们自行搜索,在这里提一点注意事项:本文用的是谷歌浏览器,浏览器驱动要对应谷歌的哦,注意浏览器驱动与你的浏览器版本相对应,这里给出谷歌浏览器驱动的下载地址,友友们按照自己浏览器的版本对应现在即可

Http://chromedriver.storage.Googleapis.com/index.html

下载完成后注意配置环境变量哦,不配置也行,不配置就要在代码中写上你的Chromedriver.exe文件的路径或者不写路径将你的Chromedriver.exe和py文件放到同一目录下也可以哦

三、代码思路分析

进入斗鱼官网,点到直播,下面的在线直播信息就是我们需要爬取的​

可以看到有标题,类型,姓名,以及热度,我们爬取这四个字段就行

然后滑到底部,这里的下一页是我们控制爬取页数的​

 注意:当我们进入页面时,虽然有滚动条,但所有直播信息已经加载好,并不是通过滑动然后ajax加载的,所以在代码中并不需要写滑动,直接提取就可以拿到整个页面的数据。

1.解析数据的函数

 #解析数据的函数
    def parse(self):
        #强制等待两秒,等待页面数据加载完毕
        sleep(2)
        li_list = self.bro.find_elements_by_xpath('//*[@id="listAll"]/section[2]/div[2]/ul/li')
        #print(len(li_list))
        data_list = []
        for li in li_list:
            dic_data = {}
            dic_data['title'] = li.find_element_by_xpath('./div/a/div[2]/div[1]/h3').text
            dic_data['name'] = li.find_element_by_xpath('./div/a/div[2]/div[2]/h2/div').text
            dic_data['art_type'] = li.find_element_by_xpath('./div/a/div[2]/div[1]/span').text
            dic_data['hot'] = li.find_element_by_xpath('./div/a/div[2]/div[2]/span').text
            data_list.append(dic_data)
        return data_list

2.保存数据的函数

 #解析数据的函数
    def parse(self):
        #强制等待两秒,等待页面数据加载完毕
        sleep(2)
        li_list = self.bro.find_elements_by_xpath('//*[@id="listAll"]/section[2]/div[2]/ul/li')
        #print(len(li_list))
        data_list = []
        for li in li_list:
            dic_data = {}
            dic_data['title'] = li.find_element_by_xpath('./div/a/div[2]/div[1]/h3').text
            dic_data['name'] = li.find_element_by_xpath('./div/a/div[2]/div[2]/h2/div').text
            dic_data['art_type'] = li.find_element_by_xpath('./div/a/div[2]/div[1]/span').text
            dic_data['hot'] = li.find_element_by_xpath('./div/a/div[2]/div[2]/span').text
            data_list.append(dic_data)
        return data_list

(1)保存为txt文本

#保存数据的函数
    def save_data(self,data_list,i):
        #在当前目录下将数据存为txt文件
        with open('./douyu.txt','w',encoding='utf-8') as fp:
            for data in data_list:
                data = str(data)
                fp.write(data+'\n')
            print("第%d页保存完成!" % i)

(2)保存为JSON文件

#保存数据的函数
    def save_data(self,data_list,i):
        with open('./douyu.json','w',encoding='utf-8') as fp:
             #里面有中文,所以注意ensure_ascii=False
             data = json.dumps(data_list,ensure_ascii=False)
             fp.write(data)
             print("第%d页保存完成!" % i)

3.主函数设计

#主函数
    def run(self):
        #输入要爬取的页数,如果输入负整数,转化成她的绝对值
        page_num = abs(int(input("请输入你要爬取的页数:")))
        #初始化页数为1
        i = 1
        #判断输入的数是否为整数
        if isinstance(page_num,int):
            #实例化浏览器对象
            self.bro = webdriver.Chrome(executable_path='../../可执行文件/chromedriver.exe')
            # chromedriver.exe如果已添加到环境变量,可省略executable_path='../../可执行文件/chromedriver.exe'
            self.bro.get(self.url)
            while i <= page_num:
                #调用解析函数
                data_list = self.parse()
                #调用保存函数
                self.save_data(data_list,i)
                try:
                    #定位包含“下一页”字段的按钮并点击
                    button = self.bro.find_element_by_xpath('//span[contains(text(),"下一页")]')
                    button.click()
                    i += 1
                except:
                    break
            self.bro.quit()
        else:
            print("输入格式错误!")

四、完整代码

from selenium import webdriver
from time import sleep
import json
#创建一个类
class Douyu():
    def __init__(self):
        self.url = 'https://www.douyu.com/directory/all'
    #解析数据的函数
    def parse(self):
        #强制等待两秒,等待页面数据加载完毕
        sleep(2)
        li_list = self.bro.find_elements_by_xpath('//*[@id="listAll"]/section[2]/div[2]/ul/li')
        #print(len(li_list))
        data_list = []
        for li in li_list:
            dic_data = {}
            dic_data['title'] = li.find_element_by_xpath('./div/a/div[2]/div[1]/h3').text
            dic_data['name'] = li.find_element_by_xpath('./div/a/div[2]/div[2]/h2/div').text
            dic_data['art_type'] = li.find_element_by_xpath('./div/a/div[2]/div[1]/span').text
            dic_data['hot'] = li.find_element_by_xpath('./div/a/div[2]/div[2]/span').text
            data_list.append(dic_data)
        return data_list
    #保存数据的函数
    def save_data(self,data_list,i):
        #在当前目录下将数据存为txt文件
        with open('./douyu.txt','w',encoding='utf-8') as fp:
            for data in data_list:
                data = str(data)
                fp.write(data+'\n')
            print("第%d页保存完成!" % i)
        # json文件的存法
        # with open('./douyu.json','w',encoding='utf-8') as fp:
        # 里面有中文,所以注意ensure_ascii=False
        #     data = json.dumps(data_list,ensure_ascii=False)
        #     fp.write(data)
        #     print("第%d页保存完成!" % i)
    #主函数
    def run(self):
        #输入要爬取的页数,如果输入负整数,转化成她的绝对值
        page_num = abs(int(input("请输入你要爬取的页数:")))
        #初始化页数为1
        i = 1
        #判断输入的数是否为整数
        if isinstance(page_num,int):
            #实例化浏览器对象
            self.bro = webdriver.Chrome(executable_path='../../可执行文件/chromedriver.exe')
            # chromedriver.exe如果已添加到环境变量,可省略executable_path='../../可执行文件/chromedriver.exe'
 
            self.bro.get(self.url)
            while i <= page_num:
                #调用解析函数
                data_list = self.parse()
                #调用保存函数
                self.save_data(data_list,i)
                try:
                    #定位包含“下一页”字段的按钮并点击
                    button = self.bro.find_element_by_xpath('//span[contains(text(),"下一页")]')
                    button.click()
                    i += 1
                except:
                    break
            self.bro.quit()
        else:
            print("输入格式错误!")
if __name__ == '__main__':
    douyu = Douyu()
    douyu.run()

总结

   本文是为了练习selenium而写的,由于一个页面有120条数据,所以采集效率较低,感兴趣的小伙伴们可以试一试requests库写,爬取速度更快哦!希望大家以后多多支持编程网!

--结束END--

本文标题: python网络爬虫基于selenium爬取斗鱼直播信息

本文链接: https://www.lsjlt.com/news/142443.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python网络爬虫基于selenium爬取斗鱼直播信息
    目录一、本文使用的第三方包和工具二、selenium的介绍和浏览器驱动的安装1.selenium的介绍2.浏览器驱动的安装三、代码思路分析1.解析数据的函数2.保存数据的函数3.主函...
    99+
    2024-04-02
  • 如何使用python网络爬虫基于selenium爬取斗鱼直播信息
    这篇文章给大家分享的是有关如何使用python网络爬虫基于selenium爬取斗鱼直播信息的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、本文使用的第三方包和工具python 3.8  谷歌...
    99+
    2023-06-29
  • Python网络爬虫与信息提取
    Requests安装 用管理员身份打开命令提示符: pip install requests 测试:打开IDLE: >>> import requests >>> r = requests.get("...
    99+
    2023-01-31
    爬虫 网络 信息
  • 基于selenium爬取拉勾网职位信息
    1.selenium   Selenium 本是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。而这一特性为爬虫开发提供了一个选择及方向,由于其本身依赖于浏览器,所以使用Python的s...
    99+
    2023-01-31
    职位 信息 selenium
  • Python 基于Selenium实现动态网页信息的爬取
    目录一、Selenium介绍与配置1.Selenium简介2. Selenium+Python环境配置二、网页自动化测试1.启动浏览器并打开百度搜索2.定位元素三、爬取动态网页的名人...
    99+
    2024-04-02
  • Python爬虫获取基金基本信息
    目录1 前言2 如何抓取基本信息3 xpath 获取数据4 bs4 获取数据5 最终结果展现1 前言 上篇文章Python爬虫获取基金列表我们已经讲述了如何从基金网站上获取基金的列表...
    99+
    2024-04-02
  • Python基于Selenium怎么实现动态网页信息的爬取
    这篇文章主要介绍“Python基于Selenium怎么实现动态网页信息的爬取”,在日常操作中,相信很多人在Python基于Selenium怎么实现动态网页信息的爬取问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-22
  • 怎么利用Python网络爬虫来提取信息
    怎么利用Python网络爬虫来提取信息,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。下面小编就为大家带来一篇Python网络爬虫与信息提取(实例讲解)。小编觉得挺不错的,现在就...
    99+
    2023-06-02
  • Python爬虫获取基金变动信息
    目录1 前言2 抓取变动信息2.1 基金的变动信息获取2.2 基金阶段信息的抓取3 最终结果展现1 前言 前面文章Python爬虫获取基金列表、Python爬虫获取基金基本信息我们已...
    99+
    2024-04-02
  • Python中怎么利用网络爬虫获取招聘信息
    Python中怎么利用网络爬虫获取招聘信息,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。定义一个class类继承object,定义init方法继承self,主函...
    99+
    2023-06-16
  • Python爬虫获取基金净值信息详情
    目录1 前言2 获取基金净值3 数据库结构设计4 如何进行数据存储5 总结1 前言 前面的文章中我们已经获取到了基金的阶段变动信息和ETF信息的获取,那么在本章中,我们将继续前面的内...
    99+
    2024-04-02
  • 详解如何使用Python网络爬虫获取招聘信息
    目录前言项目目标项目准备反爬措施项目实现效果展示小结前言 现在在疫情阶段,想找一份不错的工作变得更为困难,很多人会选择去网上看招聘信息。可是招聘信息有一些是错综复杂的。而且不能把全部...
    99+
    2024-04-02
  • 用基于python的appium爬取b站直播消费记录
    基于python的Appium进行b站直播消费记录爬取 之前看文章说fiddler也可以进行爬取,但尝试了一下没成功,这次选择appium进行爬取。类似的,可以运用爬取微信朋友圈和抖...
    99+
    2024-04-02
  • Python爬虫实现抓取电影网站信息并入库
    目录一.环境搭建1.下载安装包2.修改环境变量3.安装依赖模块二.代码开发三.运行测试1.新建电影信息表2.代码运行四.问题排查和修复1.空白字符报错2.请求报错一.环境搭建 1.下...
    99+
    2024-04-02
  • 网络爬虫丨基于requests+mysql爬取猫眼热门电影数据做可视化分析
    文章目录 写在前面实验描述实验内容遇到问题 写在后面 写在前面 本期内容:基于requests+mysql爬取猫眼热门电影数据做可视化分析 实验需求 anaconda丨pycharmp...
    99+
    2024-01-21
    爬虫 mysql 数据库
  • 如何使用Python爬虫实现抓取电影网站信息并入库
    这篇文章主要介绍如何使用Python爬虫实现抓取电影网站信息并入库,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一.环境搭建1.下载安装包访问 Python官网下载地址:https://www.python.org/...
    99+
    2023-06-29
  • python通过selenium爬取网页信息,python获取浏览器请求内容,控制已经打开的浏览器
    背景:通过python中直接get或者urlopen打开一些有延迟加载数据的网页,会抓取不到部分信息。 1. 命令行打开chrome,并开启调试端口(前提,找到chrome安装目录,找到chrome....
    99+
    2023-09-03
    python selenium chrome 爬虫
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作