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

64 篇文章 0 订阅
11 篇文章 0 订阅

在这里插入图片描述

如果你想要从网上下载一些视频资源,你可能会遇到一些难题:有些网站需要动态渲染或者用户交互才能显示视频链接,有些网站需要处理复杂的编码和数据格式。那么,在这些情况下,你应该选择哪种浏览器自动化工具呢?本文将对比两种常用的工具: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模块
const process = require("process");
const puppeteer = require("puppeteer");

// 定义代理地址、延时时间和延时函数
const PROXY = "http://www.16yun.cn:80"; // 代理服务器(产品 www.16yun.cn)可以修改这个代理地址
const SLEEP = 5000; // 你可以修改这个延时时间(毫秒)
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

// 定义一个异步函数view,接受一个URL和一个代理地址作为参数
async function view(url, proxy) {
  // 在view函数中,使用puppeteer.launch方法启动一个浏览器实例,并设置一些参数,如headless、ignoreHTTPSErrors、defaultViewport和args
  const browser = await puppeteer.launch({
    headless: true, // 设置为无头模式(不显示浏览器窗口)
    ignoreHTTPSErrors: true, // 忽略HTTPS错误
    defaultViewport: { width: 1280, height: 800 }, // 设置默认视口大小
    args: [`--proxy-server=${proxy}`], // 设置代理服务器地址
  });

  // 使用browser.newPage方法创建一个新的页面实例,并设置视口大小
  const page = await browser.newPage();
  await page.setViewport({ width: 1280, height: 800 });

  // 使用page.on方法监听request事件,如果请求的资源类型是media,并且请求的URL以https://video.twimg.com/开头,则打印出请求的URL
  page.on("request", (request) => {
    if (
      request.resourceType() === "media" &&
      request.url().startsWith("https://video.iqiyi.com/")
    ) {
      console.log(request.url());
    }
  });

  // 使用page.goto方法访问传入的URL
  await page.goto(url);

  // 使用page.click方法点击页面上选择器为.r-1ndi9ce > div:nth-child(1) > div:nth-child(1) > span:nth-child(1) > span:nth-child(1) 的元素
  await page.click(
    ".r-1ndi9ce > div:nth-child(1) > div:nth-child(1) > span:nth-child(1) > span:nth-child(1)"
  );

  // 使用sleep函数等待一段时间(SLEEP)
  await sleep(SLEEP);

  // 使用page.screenshot方法截取页面图片并保存为debug.png文件
  await page.screenshot({ path: "debug.png" });

  // 使用browser.close方法关闭浏览器实例
  await browser.close();
}

// 最后,在主程序中,获取命令行参数中的第一个参数作为URL,并调用view函数。
const url = process.argv[2]; // 获取命令行参数中的第一个参数作为URL

if (url) {
  view(url, PROXY); 
} else {
  console.log("请输入一个有效的URL"); 
}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值