Python爬虫 解决异步加载问题--以爬取PEXELS图片为例

本文介绍了如何处理Python爬虫遇到的异步加载问题,以爬取PEXELS网站的图片为例。通过逆向工程,发现了网页使用AJAX动态加载内容,并详细阐述了抓包过程,找到了新的数据请求URL。最终,实现了爬取图片的解决方案,并指出当前单进程爬虫的局限,计划改进为多进程爬虫以提高效率。
摘要由CSDN通过智能技术生成

第一次尝试爬取—>[Python爬虫]爬虫实例:三种方式爬取PEXELS图片
在爬取PEXELS时,遇到了这样问题:
页面使用Ajax的异步加载技术来实现分页,所以通过request.text无法获取动态加载的内容.而如果想正确获取这些数据,则需要使用名为逆向工程的过程(“抓包”).PS:如果对上面的文字感到疑惑,那么可以阅读下面的例子和说明,做基础的了解.
例如:要在PEXELS上看猫片 https://www.pexels.com/search/cat/ ,我们虽然在浏览器中看到很多图片,如图:
在这里插入图片描述
但是使用在response能爬到的下载链接却只有这么一点:
在这里插入图片描述
意味着网站的每一页只刷新15张图片,每次拖动滚动条向下,才再次刷新15张图片.

异步加载的说明

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

逆向工程的说明

因为使用异步加载技术后,不再是立刻加载所有的网页内容然后返回response就完事了,所以展示的新内容就不再HTML的源码中,无法抓取这些新的数据.于是我们需要抓取这些通过异步加载方法的网页数据,需要了解网页是如何加载这些数据,这个过程就叫做逆向过程.

逆向工程的实践

通过逆向工程,能够找到网页新加载的数据以及对应的新页面用于设计新的爬虫代码.
打开网页https://www.pexels.com/search/cat/ ,按F12打开开发者工具,选择Network选项卡,找到并点击XHR,之后向下拖动滚动条,就能发现右侧刷新出来一些新的文件,如图:

在这里插入图片描述
点第一个文件看到Headers请求的URL,https://www.

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值