爬虫案例2-爬取视频的三种方式之一:selenium篇(2)

news/2024/9/17 12:27:27/文章来源:https://www.cnblogs.com/laity17/p/18408830

@

目录
  • 前言
  • selenium简介
  • 实战案例
  • 共勉
  • 博客

前言

继使用requests库爬取好看视频的文章后,本文分享使用python第三方库selenium库接着来爬取视频网站,后续也会接着分享使用第三方库DrissionPage爬取视频。

selenium简介

selenium是一个用于web应用测试的工具集,它可以直接运行在浏览器中,就像真正的用户在操作一样。它主要应用在自动化测试,web爬虫和自动化任务中。selenium提供了很多编程语言的接口,如java,python,c#等。这让开发者可以自己编写脚本来自动化web应用的测试。

实战案例

话不多说 ,直接上源码

from selenium import webdriver   # 浏览器驱动
from selenium.webdriver.common.by import By  # 用来定位web页面上的元素
import time             # 时间函数
import os               # 文件管理模块
import requests        # 数据请求模块if not os.path.exists('./videos1'):  # 创建文件夹os.mkdir('./videos1')
def video(data):     # 定义请求每个详细视频的函数for url in data:   # 遍历每个详细视频的地址driver=webdriver.Chrome()   # 初始化浏览器实例driver.get(url)               # 打开url页面src=driver.find_element(by=By.CLASS_NAME, value='art-video')  # 获取每个详细视频的详细地址src=src.get_attribute('src')name=driver.find_element(by=By.CLASS_NAME, value='videoinfo-title')  # 获取每个详细视频的标题name=name.textvideo_detail=requests.get(src).content     # 对每个详细视频进行请求with open('./videos1/'+name+'.mp4','wb') as f:  # 存储视频f.write(video_detail)print(name,src)driver.quit()        # 关闭浏览器
driver=webdriver.Chrome()     # 初始化浏览器实例
driver.get("https://haokan.baidu.com/")  # 打开网址
for i in range(1,6):driver.execute_script("document.documentElement.scrollTop=2000")  # 页面下滑time.sleep(1)
time.sleep(2)
data_video=driver.find_elements(by=By.CLASS_NAME,value='videoItem_videoitem__Z_x08') # 对视频信息进行定位
data=[]        # 定义空列表,用来存储每个时评的地址
for a in data_video:  # href=a.get_attribute("href")  # 获取视频地址data.append(href)
print(data)
time.sleep(2)
driver.quit()   # 关闭浏览器
video(data)   # 调用video()函数

共勉

能力决定下限,机会决定上限

博客

  • 本人是一个渗透爱好者,不时会在微信公众号(laity的渗透测试之路)更新一些实战渗透的实战案例,感兴趣的同学可以关注一下,大家一起进步。
    • 之前在公众号发布了一个kali破解WiFi的文章,感兴趣的同学可以去看一下,在b站(up主:laity1717)也发布了相应的教学视频。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Azure Cloud Service】在Azure云服务中收集CPU监控指标和IIS进程的DUMP方法

问题描述 在使用Cloud Service服务时,发现服务的CPU占用很高,在业务请求并不大的情况下,需要直到到底是什么进程占用了大量的CPU资源,已经如何获取IIS进程(w3wp.exe)的DUMP文件?问题解答 一:收集云服务中CPU的性能数据 远程登录(RDP)到云服务的实例上,使用管理员身份运行…

Blazor开发框架Known-V2.0.10

Known今天迎来了2.0的第11个版本,同时网站网址和板块也进行了一次升级改造,虽不完美,但一直在努力改变,之前一直在完善框架功能,忽略了文档的重要性,所以这次更新了文档和API。交流互动板块也在进行当中,尽请期待。官方网站:http://known.org.cn 最新版本:V2.0.10下面…

个人项目:论文查重

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13229这个作业的目标 独立完成一个论文查重的个人项目;在项目开发中学习PSP表格的使用;学习使用Github仓库进行代码管…

Cesium源码解读之Viewer(全网最全)

今天我们来扒一扒cesium 的源码, 探寻一下底层的奥秘,我们平时工作中用的最多的应该就是var viewer = new Cesium.Viewer(cesiumContainer);这句了但我们却很少去了解他底层是否如何实现的。 首先 我们可以通过Source/Cesium.js找到api 的入口然后一步步往下走.... 这个是我理…

关闭默认WPS打开方式

原文链接:https://blog.csdn.net/Candy_SJ_/article/details/139898009 文件默认为wps打开,有时候有很多问题。关闭wps默认打开方式 还是有问题,我这边是将wps卸载了。

0基础开始Pine量化 止盈改进策略(附代码)

止盈的核心思想: 当市场价格达到设定的目标后,投资者会卖出资产,防止市场波动将已经取得的利润变为损失。 通过止盈,投资者在确保一定盈利的情况下退出市场,而不是继续持有以追求更高的收益,从而避免市场行情逆转带来的风险。0基础开始Pine量化 止盈改进策略(附代码) 可…

词表示与语言模型、大模型背后的范式

这张幻灯片讨论了大模型背后的范式,特别是预训练和微调的基本范式可以追溯到迁移学习。以下是主要内容:迁移学习 :预训练和微调的基本范式可以追溯到迁移学习。 人类可以应用之前学到的知识更快地处理新问题,我们希望机器也具有类似的能力。传统机器学习 vs. 迁移学习 :左…

词表示与语言模型

不积跬步,无以至千里;不积小流,无以成江海。

文件对比工具--BeyondCompare

💖简介 Beyond Compare 是一款功能强大的文件和文件夹比较工具,由Scooter Software开发。它可以帮助用户轻松地比较文件和文件夹的差异,并且可以合并变化、同步文件以及备份重要数据 💻环境 windows 📖版本 Beyond Compare v5.0.2 🔗地址 https://www.scootersoftwar…

基于sqli-labs Less-1的sql注入原理详细讲解

SQLi Labs 是一个专为学习和测试 SQL 注入漏洞而设计的实验室平台。它旨在帮助安全研究人员、开发者以及网络安全爱好者深入理解和实践各种 SQL 注入攻击。SQLi Labs 提供了一系列精心设计的实验室环境和挑战,模拟真实的 SQL 注入漏洞,并提供相应的解决方案。 关于sqli-labs靶…

UE4(5)逆向学习笔记(三)——UEDumper源码学习

目录0.前言1.准备2.开始阅读2.1 设置版本和Offset2.2 获取GName2.3 使用GName2.4 获取GUObjectArray2.5 使用GUObjectArray2.6 寻找dump主流程2.6.1 ObjectsManager::copyGObjectPtrs2.6.2 ObjectsManager::copyUBigObjects2.6.3 EngineCore::cacheFNames2.6.4 Engin…

k8s dashboard token 生成/获取

创建示例用户在本指南中,我们将了解如何使用 Kubernetes 的服务帐户机制创建新用户、授予该用户管理员权限并使用与该用户绑定的承载令牌登录仪表板。 对于以下每个和的代码片段ServiceAccount,ClusterRoleBinding您都应该将它们复制到新的清单文件(如)中,dashboard-admin…