08_selenium实战——学习平台公开数据批量获取

news2024/11/24 12:27:35

0、:前言

  • 该实战任务是对某视频平台中’标题’、 ‘点赞数量’、 ‘投币数量’、‘收藏数量’、‘播放次数’、以及前五条评论进行爬取。
  • 要求1:可以控制爬取视频的主题(爬取主题搜索之后的内容)
  • 要求2:可以控制爬取视频的数量
  • 要求3:对于评论数不足5条的用0填充评论内容
  • 爬虫实现流程概要:
    在这里插入图片描述

1、检查谷歌浏览器版本,下载对应的页面驱动:

  • 谷歌新版本页面驱动
  • 下载驱动后,将驱动与代码放在同一文件内测试
# 方法1:老版本selenium
from selenium.webdriver import Chrome

# windows系统检查是否正确配置好可以使用selenium的chrome驱动:
driver = Chrome(executable_path='./chromedriver.exe')
driver.get(url='https://www.baidu.com/')
driver.close()

# 方法2:新版本selenium
# from selenium.webdriver import Chrome
# from selenium.webdriver.chrome.service import Service
#
# # 创建谷歌浏览器对象:
# driver = Chrome(service=Service(executable_path='./chromedriver.exe')) # mos系统换一下包名称
# driver.get(url='https://www.baidu.com/')
# driver.close()

如果百度页面一闪出现后,关闭,就说明谷歌驱动和谷歌浏览器匹配。


2、首次爬取获取你的cookies:

  • cookie是字典,cookies是cookie的复数,是一个列表。cookie保存了用户的账号、密码信息,拥有cookie信息,就能不通过账号密码登录平台,因为本此爬取平台必须登录,所以需要首先获取cookies信息,方便每次测试直接通过cookies登录
  • cookies是有有效期的,失效后需要重新获取
  • 代码
# 1、首先模拟登录,获取B站cookies
# 导包
import time
import random
from selenium import webdriver # 谷歌浏览器插件
from selenium.webdriver.common.by import By # 定位策略
from selenium.webdriver.support.wait import WebDriverWait # 导入显式等待模块
from selenium.webdriver.support import expected_conditions as EC # 导入期望模块配合显式等待

# 网页打开时的配置代码
# 为谷歌浏览器对象修改配置(创建设置对象)
Options = webdriver.ChromeOptions()
# 不让浏览器关闭
Options.add_experimental_option("detach", True)

browser = webdriver.Chrome(executable_path='./chromedriver.exe', options=Options) # 创建谷歌浏览器对象
# 窗口最大化(因为B站每次加载显示的项目数量随页面改变)
browser.maximize_window()
URL = 'https://www.bilibili.com/'
browser.get(url=URL)

# 找到登录按钮
login_button = browser.find_element(By.CSS_SELECTOR,
                     '#i_cecream > div.bili-feed4 > div.bili-header.large-header > div.bili-header__bar > ul.right-entry > li:nth-child(1) > li > div > div > span')
# 点击登录按钮
login_button.click()

# 判断是否登录成功(显式等待60s直到用户名出现)
WebDriverWait(browser, 60).until(
    # 等待用户名出现
    EC.text_to_be_present_in_element(
        (By.CSS_SELECTOR,'#i_cecream > div.bili-feed4 > div.bili-header.large-header > div.bili-header__bar > ul.right-entry > li.v-popover-wrap.header-avatar-wrap > div.v-popover.is-bottom > div > div > a.nickname-item'),
        '疋瓞'
    ))
print('登录成功!')
# 登录成功以后获取cookie,将cookie保存到文件中
cookies = browser.get_cookies()
# cookie是字典,cookies是cookie的复数,是一个列表。
with open('Bili_cookies.txt', 'w', encoding='utf-8') as file:
    file.write(str(cookies))
print('cookies写入完成!')
browser.quit() # 关闭所有标签页

3、通过cookies登录爬取信息:

  • 代码
# 2、使用cookies登录【cookies隔一段时间会失效】
# 导包
import csv
import time
import random
from selenium import webdriver # 谷歌浏览器插件
from selenium

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1069188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue启动项目,npm run dev出现error:0308010C:digital envelope routines::unsupported

运行vue项目,npm run dev的时候出现不支持错误error:0308010C:digital envelope routines::unsupported。 在网上找了很多,大部分都是因为版本问题,修改环境之类的,原因是对的但是大多还是没能解决。经过摸索终于解决了。 方法如…

第九课 排序

文章目录 第九课 排序排序算法lc912.排序数组--中等题目描述代码展示 lc1122.数组的相对排序--简单题目描述代码展示 lc56.合并区间--中等题目描述代码展示 lc215.数组中的第k个最大元素--中等题目描述代码展示 acwing104.货仓选址--简单题目描述代码展示 lc493.翻转树--困难题…

保护 Web 服务器安全性

面向公众的系统(如 Web 服务器)经常成为攻击者的目标,如果这些业务关键资源没有得到适当的保护,可能会导致安全攻击,从而导致巨大的财务后果,并在客户中失去良好的声誉。 什么是网络服务器审核 当有人想要…

无线振弦采集仪在岩土工程中如何远程监测和远程维护

无线振弦采集仪在岩土工程中如何远程监测和远程维护 随着岩土工程施工的不断发展和科技水平的不断提高,远程监测和远程维护设备也得到了广泛关注和应用。无线振弦采集仪是一种广泛应用于岩土工程中的测量仪器,在现代化施工中扮演着重要的角色。本文将就…

ChromeDriver驱动最新版下载

下载地址ChromeDriver - WebDriver for Chrome - Downloads selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 113 Current browser version is 117.0.5938.150 with binar…

2、模块传参和依赖

一、模块传参 使用函数 module_param(name,type,perm); 将指定的全局变量设置成模块参数 /* name:全局变量名 type:使用符号 实际类型 传参方式bool bool insmod xxx.ko 变量名0 或 1invbool bool insmod xx…

运营商sdwan优缺点及sdwan服务商优势

SD-WAN(软件定义广域网)作为一种重要的网络解决方案,已经受到了广泛的关注和采用。然而, 无论是由传统运营商提供的SD-WAN还是专门的SD-WAN服务提供商,都存在各自的优缺点。 运营商提供的SD-WAN的缺点: 1. 有限的灵活性&#xf…

数据库查询详解

数据库查询操作 前置:首先我们创建一个练习的数据库 /* SQLyog Professional v12.09 (64 bit) MySQL - 5.6.40-log : Database - studentsys ********************************************************************* *//*!40101 SET NAMES utf8 */;/*!40101 SET …

【uniapp】自定义导航栏时,设置安全距离,适配不同机型

1、在pages.json中,给对应的页面设置自定义导航栏样式 {"path": "pages/index/index","style": {"navigationStyle": "custom","navigationBarTextStyle": "white","navigationBarTitl…

智慧电力物联网系统引领电力行业数字化发展

智慧电力物联网系统是以提高用户侧电力运行安全、降低运维成本为目的的一套电力运维管理系统。综合分析采用智慧物联网、人工智能等现代化经济信息网络技术,配置智能采集终端、小安神童值班机器人或边缘网关,实现对企事业用户供配电系统的数字化远程监控…

网关、网桥、路由器和交换机之【李逵与李鬼】

概念 网关 网关简单来说是连接两个网络的设备,现在很多局域网都是采用路由器来接入网络,因此现在网关通常指的就是路由器的IP。网关可用于家庭或者小型企业,连接局域网和Internet,也有用于工业应用的。 网桥 网桥也叫桥接器,是连接两个局域网的一种存储/转发设备,它能…

Python字符串处理:掌握文本的艺术

更多资料获取 🤓 作者主页:涛哥聊Python 📚 个人网站:涛哥聊Python 在Python编程中,字符串是一种不可或缺的数据类型,用于表示文本和字符数据。本文将深入探讨Python字符串的各个方面,从基础概…

网络安全(黑客技术)—小白自学笔记

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟入…

缓冲流 java

字节缓冲池的默认大小 (8192/byte)字节输入输出流 字节缓冲输入接口也是 InputStream 读字节 实现类BufferedInputStream 字节缓冲输出接口也是 OutputStream 写字节 实现类BufferedOutputStream package BufferFlow;import CopysIO.Myconnectio…

vue-next-admin本地部署

开源地址 文档 本次学习的代码地址https://gitee.com/lyt-top/vue-next-admin/tree/vue-next-admin-nest/,这个做了前后端分离方便学习 部署 下载代码,解压 后台 创建数据库 CREATE DATABASE vuenextadmin01 CHARACTER SET utf8 COLLATE utf8_bin;…

25 mysql like 是否使用索引

前言 这里主要是 探究一下 explain $sql 中各个 type 诸如 const, ref, range, index, all 的查询的影响, 以及一个初步的效率的判断 这里会调试源码来看一下 各个类型的查询 需要 lookUp 的记录 以及 相关的差异 此系列文章建议从 mysql const 查询 开始看 测试表结构…

大文件上传,前端vue 做分片上传

html – 以弹窗的形式 <!-- 上传算法文件 --> <el-dialog title"上传算法文件" :visible.sync"uploadPop" width"60%" :close-on-click-modal"false" :before-close"closeUploadPop" append-to-body custom-class…

完美收官丨深圳信驰达科技IOTE 2023第二十届国际物联网展参展回顾

►►►展会风采 2023年9月22日&#xff0c;为期三天的IOTE 2023第二十届国际物联网展 • 深圳站在深圳国际会展中心&#xff08;宝安馆&#xff09;9、10、11号馆圆满落幕。本届展会以“IoT构建数字经济底座”为主题&#xff0c;吸引覆盖IoT全栈生态的参展商&#xff0c;展出超…

【数据结构】快排的详细讲解

目录&#xff1a; 介绍 一&#xff0c;递归快排确定基准值 二&#xff0c;递归遍历 三&#xff0c;非递归的快排 四&#xff0c;快排的效率 介绍 快排是排序算法中效率是比较高的&#xff0c;快排的基本思想是运用二分思想&#xff0c;与二叉树的前序遍历类似&#xff0c;…

C++ 之如何将数组传递给函数?

在本文中&#xff0c;您将学习将数组传递给C 中的函数。您将学习如何传递一维和多维数组。 数组可以作为参数传递给函数。也可以从函数返回数组。考虑以下示例&#xff0c;将一维数组传递给函数&#xff1a; 示例1&#xff1a;将一维数组传递给函数 C 程序通过将一维数组传递…