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。

相关文章
|
4天前
|
前端开发 搜索推荐 编译器
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
|
1天前
|
存储 算法 Serverless
剖析文件共享工具背后的Python哈希表算法奥秘
在数字化时代,文件共享工具不可或缺。哈希表算法通过将文件名或哈希值映射到存储位置,实现快速检索与高效管理。Python中的哈希表可用于创建简易文件索引,支持快速插入和查找文件路径。哈希表不仅提升了文件定位速度,还优化了存储管理和多节点数据一致性,确保文件共享工具高效运行,满足多用户并发需求,推动文件共享领域向更高效、便捷的方向发展。
|
21天前
|
JSON 数据可视化 测试技术
python+requests接口自动化框架的实现
通过以上步骤,我们构建了一个基本的Python+Requests接口自动化测试框架。这个框架具有良好的扩展性,可以根据实际需求进行功能扩展和优化。它不仅能提高测试效率,还能保证接口的稳定性和可靠性,为软件质量提供有力保障。
54 7
|
1月前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
245 7
|
2月前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
2月前
|
JavaScript 前端开发 开发者
探索 DrissionPage: 强大的Python网页自动化工具
DrissionPage 是一个基于 Python 的网页自动化工具,结合了浏览器自动化的便利性和 requests 库的高效率。它提供三种页面对象:ChromiumPage、WebPage 和 SessionPage,分别适用于不同的使用场景,帮助开发者高效完成网页自动化任务。
210 4
|
2月前
|
数据采集 JSON 数据格式
深入解析:使用Python爬取Bilibili视频
本文介绍了如何使用Python编写脚本自动化下载Bilibili视频。通过requests等库获取视频和音频URL,使用ffmpeg合并音视频文件,最终实现高效下载。注意遵守网站爬虫政策和法律法规。
345 4
|
3月前
|
数据采集 前端开发 算法
Python Requests 的高级使用技巧:应对复杂 HTTP 请求场景
本文介绍了如何使用 Python 的 `requests` 库应对复杂的 HTTP 请求场景,包括 Spider Trap(蜘蛛陷阱)、SESSION 访问限制和请求频率限制。通过代理、CSS 类链接数控制、多账号切换和限流算法等技术手段,提高爬虫的稳定性和效率,增强在反爬虫环境中的生存能力。文中提供了详细的代码示例,帮助读者掌握这些高级用法。
158 1
Python Requests 的高级使用技巧:应对复杂 HTTP 请求场景
|
2月前
|
开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第41天】 在编程的世界中,效率与简洁是永恒的追求。本文将深入探讨Python编程语言中一个独特且强大的特性——列表推导式(List Comprehension)。我们将通过实际代码示例,展示如何利用这一工具简化代码、提升性能,并解决常见编程问题。无论你是初学者还是资深开发者,掌握列表推导式都将使你的Python之旅更加顺畅。
|
3月前
|
网络协议 数据库连接 Python
python知识点100篇系列(17)-替换requests的python库httpx
【10月更文挑战第4天】Requests 是基于 Python 开发的 HTTP 库,使用简单,功能强大。然而,随着 Python 3.6 的发布,出现了 Requests 的替代品 —— httpx。httpx 继承了 Requests 的所有特性,并增加了对异步请求的支持,支持 HTTP/1.1 和 HTTP/2,能够发送同步和异步请求,适用于 WSGI 和 ASGI 应用。安装使用 httpx 需要 Python 3.6 及以上版本,异步请求则需要 Python 3.8 及以上。httpx 提供了 Client 和 AsyncClient,分别用于优化同步和异步请求的性能。
python知识点100篇系列(17)-替换requests的python库httpx