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。

相关文章
|
3天前
|
测试技术 Python
Python MagicMock: Mock 变量的强大工具
Python MagicMock: Mock 变量的强大工具
22 8
|
6天前
|
编解码 Python
Python如何给视频添加音频和字幕
Python如何给视频添加音频和字幕
|
4天前
|
JSON API 数据格式
30天拿下Python之requests模块
30天拿下Python之requests模块
17 7
|
9天前
|
Python
python第三方库-字符串编码工具 chardet 的使用(python3经典编程案例)
这篇文章介绍了如何使用Python的第三方库chardet来检测字符串的编码类型,包括ASCII、GBK、UTF-8和日文编码的检测示例。
36 6
|
6天前
|
API Python
使用Python requests库下载文件并设置超时重试机制
使用Python的 `requests`库下载文件时,设置超时参数和实现超时重试机制是确保下载稳定性的有效方法。通过这种方式,可以在面对网络波动或服务器响应延迟的情况下,提高下载任务的成功率。
21 1
|
6天前
|
编解码 Python Windows
python有没有包 可以检测 这个视频是否可以播放
python有没有包 可以检测 这个视频是否可以播放
|
8天前
|
测试技术 API Python
Python中requests、aiohttp、httpx性能对比
这篇文章对比了Python中三个流行的HTTP客户端库:requests、aiohttp和httpx,在发送HTTP请求时的性能,并提供了测试代码和结果,以帮助选择适合不同应用场景的库。
14 2
|
13天前
|
数据采集 JSON API
🎓Python网络请求新手指南:requests库带你轻松玩转HTTP协议
本文介绍Python网络编程中不可或缺的HTTP协议基础,并以requests库为例,详细讲解如何执行GET与POST请求、处理响应及自定义请求头等操作。通过简洁易懂的代码示例,帮助初学者快速掌握网络爬虫与API开发所需的关键技能。无论是安装配置还是会话管理,requests库均提供了强大而直观的接口,助力读者轻松应对各类网络编程任务。
53 3
|
14天前
|
机器学习/深度学习 JSON API
HTTP协议实战演练场:Python requests库助你成为网络数据抓取大师
在数据驱动的时代,网络数据抓取对于数据分析、机器学习等至关重要。HTTP协议作为互联网通信的基石,其重要性不言而喻。Python的`requests`库凭借简洁的API和强大的功能,成为网络数据抓取的利器。本文将通过实战演练展示如何使用`requests`库进行数据抓取,包括发送GET/POST请求、处理JSON响应及添加自定义请求头等。首先,请确保已安装`requests`库,可通过`pip install requests`进行安装。接下来,我们将逐一介绍如何利用`requests`库探索网络世界,助你成为数据抓取大师。在实践过程中,务必遵守相关法律法规和网站使用条款,做到技术与道德并重。
28 2
|
15天前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
47 3
下一篇
无影云桌面