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。

相关文章
|
2月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
2月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
3月前
|
存储 缓存 测试技术
理解Python装饰器:简化代码的强大工具
理解Python装饰器:简化代码的强大工具
|
4月前
|
程序员 测试技术 开发者
Python装饰器:简化代码的强大工具
Python装饰器:简化代码的强大工具
220 92
|
3月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
3月前
|
存储 大数据 Unix
Python生成器 vs 迭代器:从内存到代码的深度解析
在Python中,处理大数据或无限序列时,迭代器与生成器可避免内存溢出。迭代器通过`__iter__`和`__next__`手动实现,控制灵活;生成器用`yield`自动实现,代码简洁、内存高效。生成器适合大文件读取、惰性计算等场景,是性能优化的关键工具。
247 2
|
2月前
|
数据采集 自然语言处理 数据可视化
Python爬取B站视频评论区情感分析:从数据采集到价值挖掘
B站作为年轻人聚集地,评论蕴含丰富情感与趋势。本文详解如何用Python爬取评论,结合SnowNLP与jieba进行中文情感分析,并通过可视化挖掘用户情绪、消费意愿与内容反馈,助力精准运营与决策。
468 0
|
3月前
|
机器学习/深度学习 编解码 Python
Python图片上采样工具 - RealESRGANer
Real-ESRGAN基于深度学习实现图像超分辨率放大,有效改善传统PIL缩放的模糊问题。支持多种模型版本,推荐使用魔搭社区提供的预训练模型,适用于将小图高质量放大至大图,放大倍率越低效果越佳。
270 3
|
4月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
824 1
|
3月前
|
算法 安全 数据安全/隐私保护
Python随机数函数全解析:5个核心工具的实战指南
Python的random模块不仅包含基础的随机数生成函数,还提供了如randint()、choice()、shuffle()和sample()等实用工具,适用于游戏开发、密码学、统计模拟等多个领域。本文深入解析这些函数的用法、底层原理及最佳实践,帮助开发者高效利用随机数,提升代码质量与安全性。
669 0

推荐镜像

更多