puppeteer vs python requests:哪种工具更适合采集视频链接?

简介: 如果你想要从网上下载一些视频资源,你可能会遇到一些难题:有些网站需要动态渲染或者用户交互才能显示视频链接,有些网站需要处理复杂的编码和数据格式。那么,在这些情况下,你应该选择哪种浏览器自动化工具呢?本文将对比两种常用的工具:puppeteer和python requests,并分析它们在采集视频链接方面的优缺点。

01013-4020191697-_modelshoot style,a girl on the computer, (extremely detailed CG unity 8k wallpaper), full shot body photo of the most beautiful.png

如果你想要从网上下载一些视频资源,你可能会遇到一些难题:有些网站需要动态渲染或者用户交互才能显示视频链接,有些网站需要处理复杂的编码和数据格式。那么,在这些情况下,你应该选择哪种浏览器自动化工具呢?本文将对比两种常用的工具:puppeteer和python requests,并分析它们在采集视频链接方面的优缺点。

  • 什么是puppeteer?

puppeteer是一个Node.js库,它提供了一个高级API来通过DevTools协议控制Chrome或者Chromium浏览器34。利用puppeteer,你可以模拟大多数人类在浏览器中的交互行为,例如点击、输入、滚动等。这样,你就可以访问一些需要动态渲染或者用户操作才能显示的视频链接34

除此之外,puppeteer还可以利用Chrome DevTools协议来控制浏览器的各种功能,例如截图、录屏、网络拦截等34。这些功能可以帮助你调试和展示你的爬虫结果。

  • 么是python requests?

python requests是一个Python库,它提供了一个简单易用的HTTP客户端5。利用python requests, 你可以发送各种类型的HTTP请求,并且支持cookies、重定向、代理等功能5。这样, 你就可以访问一些不需要动态渲染或者用户操作就能显示的视频链接5

puppeteer和python requests的优缺点

puppeteer和python requests都是有用的浏览器自动化工具,它们在采集视频链接方面有各自的优势和局限性。下面是一个简单的对比表:

工具

优点

缺点

puppeteer

可以访问动态渲染或者用户交互的内容;可以利用DevTools协议控制浏览器功能;可以运行在无头模式下提高性能;只需要使用一种语言(JavaScript)和一种浏览器(Chrome)

只能控制Chrome或者Chromium浏览器,不能兼容其他浏览器;可能比其他工具更难以在不同平台和环境下运行;可能遇到反爬虫机制

python requests

可以访问不需要动态渲染或者用户交互的内容;可以发送各种类型的HTTP请求并支持多种功能;可以处理各种编码和数据格式并与其他Python库兼容

不能访问动态渲染或者用户交互的内容;不能利用DevTools协议控制浏览器功能;需要使用两种语言(Python和JavaScript)和多种浏览器

下面提供一段代码,使用puppeteer对视频网站进行采集

// 引入process和puppeteer模块constprocess=require("process");
constpuppeteer=require("puppeteer");
// 定义代理地址、延时时间和延时函数constPROXY="http://www.16yun.cn:80"; // 代理服务器(产品 www.16yun.cn)可以修改这个代理地址constSLEEP=5000; // 你可以修改这个延时时间(毫秒)constsleep= (ms) =>newPromise((resolve) =>setTimeout(resolve, ms));
// 定义一个异步函数view,接受一个URL和一个代理地址作为参数asyncfunctionview(url, proxy) {
// 在view函数中,使用puppeteer.launch方法启动一个浏览器实例,并设置一些参数,如headless、ignoreHTTPSErrors、defaultViewport和argsconstbrowser=awaitpuppeteer.launch({
headless: true, // 设置为无头模式(不显示浏览器窗口)ignoreHTTPSErrors: true, // 忽略HTTPS错误defaultViewport: { width: 1280, height: 800 }, // 设置默认视口大小args: [`--proxy-server=${proxy}`], // 设置代理服务器地址  });
// 使用browser.newPage方法创建一个新的页面实例,并设置视口大小constpage=awaitbrowser.newPage();
awaitpage.setViewport({ width: 1280, height: 800 });
// 使用page.on方法监听request事件,如果请求的资源类型是media,并且请求的URL以https://video.twimg.com/开头,则打印出请求的URLpage.on("request", (request) => {
if (
request.resourceType() ==="media"&&request.url().startsWith("https://video.iqiyi.com/")
    ) {
console.log(request.url());
    }
  });
// 使用page.goto方法访问传入的URLawaitpage.goto(url);
// 使用page.click方法点击页面上选择器为.r-1ndi9ce > div:nth-child(1) > div:nth-child(1) > span:nth-child(1) > span:nth-child(1) 的元素awaitpage.click(
".r-1ndi9ce > div:nth-child(1) > div:nth-child(1) > span:nth-child(1) > span:nth-child(1)"  );
// 使用sleep函数等待一段时间(SLEEP)awaitsleep(SLEEP);
// 使用page.screenshot方法截取页面图片并保存为debug.png文件awaitpage.screenshot({ path: "debug.png" });
// 使用browser.close方法关闭浏览器实例awaitbrowser.close();
}
// 最后,在主程序中,获取命令行参数中的第一个参数作为URL,并调用view函数。consturl=process.argv[2]; // 获取命令行参数中的第一个参数作为URLif (url) {
view(url, PROXY); 
} else {
console.log("请输入一个有效的URL"); 
}

总之,puppeteer和python requests都是有用的浏览器自动化工具,它们适合访问不同类型的网站。选择哪种工具取决于你要爬取的网站类型、数据量、目标浏览器等因素。如果你想要访问一些复杂和动态的网站,你可以考虑使用puppeteer。

目录
打赏
0
0
0
0
216
分享
相关文章
PySide vs PyQt:Python GUI开发史诗级对决,谁才是王者?
PySide 和 PyQt 是 Python GUI 开发领域的两大利器,各有特色。PySide 采用 LGPL 协议,更灵活;PyQt 默认 GPL,商业使用需授权。两者背后团队实力雄厚,PySide 得到 Qt 官方支持,PyQt 由 Riverbank Computing 打造。API 设计上,PySide 简洁直观,贴近原生 Qt;PyQt 增加 Pythonic 接口,操作更高效。性能方面,两者表现优异,适合不同需求的项目开发。选择时可根据项目特点与开源要求决定。
136 20
无headers爬虫 vs 带headers爬虫:Python性能对比
无headers爬虫 vs 带headers爬虫:Python性能对比
从零复现Google Veo 3:从数据预处理到视频生成的完整Python代码实现指南
本文详细介绍了一个简化版 Veo 3 文本到视频生成模型的构建过程。首先进行了数据预处理,涵盖了去重、不安全内容过滤、质量合规性检查以及数据标注等环节。
100 5
从零复现Google Veo 3:从数据预处理到视频生成的完整Python代码实现指南
分析http.client与requests在Python中的性能差异并优化。
合理地选择 `http.client`和 `requests`库以及在此基础上优化代码,可以帮助你的Python网络编程更加顺利,无论是在性能还是在易用性上。我们通常推荐使用 `requests`库,因为它的易用性。对于需要大量详细控制的任务,或者对性能有严格要求的情况,可以考虑使用 `http.client`库。同时,不断优化并管理员连接、设定合理超时和重试都是提高网络访问效率和稳定性的好方式。
80 19
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
本文以反面教材形式,剖析了在使用 Playwright 爬取懂车帝车友圈问答数据时常见的配置错误(如未设置代理、Cookie 和 User-Agent),并提供了 Python、Java 和 .NET 三种语言的修复代码示例。通过错误示例 → 问题剖析 → 修复过程 → 总结教训的完整流程,帮助读者掌握如何正确配置爬虫代理及其它必要参数,避免 IP 封禁和反爬检测,实现高效数据采集与分析。
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
解决Python requests库POST请求参数顺序问题的方法。
总之,想要在Python的requests库里保持POST参数顺序,你要像捋顺头发一样捋顺它们,在向服务器炫耀你那有条不紊的数据前。抓紧手中的 `OrderedDict`与 `json`这两把钥匙,就能向服务端展示你的请求参数就像经过高端配置的快递包裹,里面的商品摆放井井有条,任何时候开箱都是一种享受。
55 10
解析http.client与requests在Python中的性能比较和改进策略。
最后,需要明确的是,这两种库各有其优点和适用场景。`http.client` 更适合于基础且并行的请求,`requests` 则因其易用且强大的功能,更适用于复杂的 HTTP 场景。对于哪种更适合你的应用,可能需要你自己进行实际的测试来确定。
60 10
|
1月前
|
分析参数顺序对Python requests库进行POST请求的影响。
最后,尽管理论上参数顺序对POST请求没影响,但编写代码时仍然建议遵循一定的顺序和规范,比如URL总是放在第一位,随后是data或json,最后是headers,这样可以提高代码的可读性和维护性。在处理复杂的请求时,一致的参数顺序有助于调试和团队协作。
91 9
把Postman调试脚本秒变Python采集代码的三大技巧
本文介绍了如何借助 Postman 调试工具快速生成 Python 爬虫代码,并结合爬虫代理实现高效数据采集。文章通过“跨界混搭”结构,先讲解 Postman 的 API 调试功能,再映射到 Python 爬虫技术,重点分享三大技巧:利用 Postman 生成请求骨架、通过 Session 管理 Cookie 和 User-Agent,以及集成代理 IP 提升稳定性。以票务信息采集为例,展示完整实现流程,探讨其在抗封锁、团队协作等方面的价值,帮助开发者快速构建生产级爬虫代码。
103 1
把Postman调试脚本秒变Python采集代码的三大技巧
抖音直播间采集提取工具,直播间匿名截流获客软件,Python开发【仅供学习】
这是一套基于Python开发的抖音直播间数据采集与分析系统,包含观众信息获取、弹幕监控及数据存储等功能。代码采用requests、websockets和sqlite3等...

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问