网页视频抓取脚本(第一次尝试爬取—[Python爬虫]爬虫实例:三种方式爬取PEXELS)

优采云 发布时间: 2022-04-16 12:05

  网页视频抓取脚本(第一次尝试爬取—[Python爬虫]爬虫实例:三种方式爬取PEXELS)

  第一次尝试爬取—>【Python爬虫】爬虫示例:爬取PEXELS图片的三种方式

  在爬PEXELS的时候,遇到了这样一个问题:

  页面使用Ajax的异步加载技术来实现分页,因此无法通过request.text获取动态加载的内容。如果要正确获取数据,则需要使用称为逆向工程(“数据包捕获”)的过程。PS:如果你对上面的文字感到困惑,那么你可以阅读下面的例子和解释来做一个基本的了解。

  例如:在PEXELS上看猫电影,虽然我们在浏览器中看到很多图片,如图:

  

  但是使用响应中可以爬取的下载链接只有这个:

  

  意思是网站的每一页只刷新15张图片,每次向下拖动滚动条,又刷新15张图片。

  异步加载说明

  传统网页如果需要更新内容,必须重新加载整个网页,网页加载速度慢,用户体验差,数据传输少,会造成带宽浪费。异步加载技术 (AJAX) 是指一种创建交互式 Web 应用程序的方法。网络开发技术。通过在后台与服务器交换少量数据,AJAX 可以使网页异步更新。这意味着可以在不重新加载整个网页的情况下更新部分网页。

  逆向工程说明

  因为使用异步加载技术后,不再需要立即加载所有网页内容然后返回响应,因此显示的新内容不再在 HTML 源代码中,无法捕获这些新数据。所以我们需要通过网页数据的异步加载方式来捕捉这些,就需要了解网页是如何加载数据的。这个过程称为逆过程。

  逆向工程实践

  通过逆向工程,可以找到网页新加载的数据和对应的新页面,用于设计新的爬虫代码。

  打开网页,按F12打开开发者工具,选择Network选项卡,找到并点击XHR,然后向下拖动滚动条,可以发现右侧刷新了一些新文件,如图:

  

  点击第一个文件可以看到Headers请求的URL,03:21:06 +0000

  

  然后点击响应

  

  将内容复制到文本

  

  这不是我要抓取的图片地址吗?

  03:21:06 +0000

  猜想上面的URL会由?page=2改为page=x来获取第x页的信息,删除以下内容后直接访问是没有问题的:

  这样,我们就得到了需要爬取的网页。

  印证了之前的结论,每页刷新15张图片。

  既然知道了网页的地址,爬虫修改它就很方便了。

  爬虫代码

<p>import requests

import re

import time

headers = {

&#39;User-Agent&#39;: &#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64) &#39;

&#39;AppleWebKit/537.36 (KHTML, like Gecko) &#39;

&#39;Chrome/67.0.3396.79 Safari/537.36&#39;

}

def pic_scratch(url):

res = requests.get(url, headers)

links = re.findall(&#39;<a href=\"(.*)\" download>&#39;, res.text)

for link in links:

pic = requests.get(link, headers)

pic_name = re.search(&#39;(?

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线