Python爬虫:如何实现异步加载爬取图片?
off999 2025-05-05 18:06 26 浏览 0 评论
当我们了解了前面讲过的不同库的网页爬取后,在实践当中会发现有的时候代码检查没有问题,就是爬取不到数据,这是因为碰到了使用异步加载技术的网页。
何为异步加载?
想理解异步加载技术,先要知道传统的网页是如何加载的,首先,传统的网页更新内容需要对整个页面进行刷新更新,资源浪费较大,但是现在常用的异步加载技术(AJAX:JavaScript和XML)指的就是一种交互式网页应用技术,如没有翻页,一致下滑可以不断更新网页部分数据信息,同时当前网页基础框架和网址等信息都不变指的就是异步加载技术,大大的节约了网络资源。
还有一种判断是否使用了异步加载的方法,就是通过查看数据是否在网页源代码中。
使用了异步加载的网页后,网页中的内容在HTML中是找不到文本信息的,这时候通过常规三大爬取库是抓不到信息的,因此需要逆向去寻找推导出来网页是如何加载数据的过程,这个过程就叫做逆向工程。
如何实现逆向工程?
以Pexels网站为例,我们来看一下如何实现逆向工程:
- 打开Chrome浏览器对应Pexels网站,右键检查,打开网页源代码,选择Network选项卡。
- 继续手动下滑网页,会发现XHR文件在不断加载更新,通过上图红框可以发现在固定变化的URL:
https://www.pexels.com/search/book/?format=js&seed=&page=2&type=
https://www.pexels.com/search/book/?format=js&seed=&page=3&type=
https://www.pexels.com/search/book/?format=js&seed=&page=4&type=
尝试删除上述URL中的部分,得到
https://www.pexels.com/search/book/? page=2发现也可以返回正常的网页
这样就逆向推导出来了真实的网页URL,也知道了网页的变化规律,可以开始进行数据爬取了。
由于Pexels图片网站设置了比较严格的反扒机制,后续我们来讲如何破解,我们用hippopx图片网站来进行实践练习,此网站也有大量精美免费无版权图片,大家可尝试看看。
详细代码如下:
import requests
from lxml import etree
import os
headers={
"accept": "xxxx",
"cookie": "xxxx",
"User-Agent": "xxxx",
"referer": "xxxx"
}
list=[]
file='存储路径'
url='https://www.hippopx.com/'
html=requests.get(url,headers=headers)
selector=etree.HTML(html.text)
imgs=selector.xpath('//*[@id="flow"]/li/figure/a/img')
for img in imgs:
photo=img.get('src')
list.append(photo)
for item in list:
print(item)
data=requests.get(item,headers=headers)
fp= open(file+'/'+item.split('/')[-1],'wb')
fp.write(data.content)
fp.close()运行结果如下:
存储图片如下:
以上就是异步加载的内容,大家有任何疑问欢迎随时交流!
--每天一小步,未来一大步!
相关推荐
- 手机银行下载(手机银行下载app下载安装到手机)
-
1.首先打开手机app,然后在界面搜索你要下载的某个银行app软件,进行搜索,搜索好之后,就会出来了。2.然后再点击旁边的获取按钮进行获取,在获取之后,需要进行相关验证,才能继续操作。3.此时会弹出一...
- 7723游戏盒子免费安装(7723游戏盒子免费安装苹果)
-
1.7723盒子的下载方式是多样的。2.首先,可以通过在手机应用商店搜索7723盒子并直接下载安装。其次,也可以在7723盒子官方网站上下载安装包,然后将安装包传输到手机上进行安装。此外,还可以通...
- 连连看经典版下载(经典连连看老版本)
-
如何在电脑上下载游戏连连看电脑可以到应用商店内查找下载。想要在电脑下载连连看游戏软件,首先需要先下载一个应用商店电脑软件。下载应用商店电脑软件后,点击搜索宠物连连看。找到该游戏软件后点击确认并选择电脑...
- 凯立德地图(凯立德地图免费更新吗)
-
不是正版的,拿激活码与特征码到凯立德官网上验证下就知道了。全是免费的网上有下载,向他们花钱就有点冤了。凯立德地图可能没有标注乡下小路的原因有几个可能性。首先,乡下小路可能相对较少使用,而凯立德地图主...
- 瑞星杀毒(瑞星杀毒公司现状)
-
很好瑞星公司一直发展得很好,其推出的各式品牌深受好评。其杀毒软件占用系统资源少,病毒库更新快,是一款不错的国产杀毒软件。自从瑞星很久之前被爆出自己造病毒给自己杀之后,名声一落千丈,再加上360,金山等...
- 看所有电视免费的网站(看电视剧免费的的网站大全)
-
免vip看电视追剧的网站:1.“电影天堂”网站。这个网站所有的电影、电视剧、美剧,韩剧,动漫、综艺等影视资源都可以在线观看,并且支持绝大多数资源的高清下载。2.“电影港”。这个网站同样是免费观看,且支...
- 种子搜索神器的最新版(种子搜索器新版下载)
-
1在目前市场上,有很多种子搜索器可以选择,但有些不够稳定,有些又存在某些安全隐患,因此需要谨慎选择。2推荐使用热门的种子搜索器,例如磁力猫、BT天堂等,它们拥有庞大的用户群体和资源库,相对比较稳定...
- txt免费全本阅读器旧版本(全本免费txt小说app旧版)
-
是的,有许多可以自动翻页的txt小说阅读器,以下是一些常用的阅读器:1.CoolReader:一个免费、开源的阅读器,支持多种格式,包括txt、fb2、epub等,支持自定义字体、字号、背景颜色等...
-
- 赚钱的游戏软件一天赚200元(可以赚钱的游戏一天赚100~200元! 视频)
-
都是骗子注册会员就不能用了,一分也提不出来了今日头条赚金币,男女老少都爱玩。每天只要稍微动一动手指,至少能提现0.5元,偷偷地说一声:“比头条辛辛苦苦码字剪辑赚钱可快多啦!”不信你就来试一试吧。赚得200金币,确实很少能赚到,因为很少有整十...
-
2026-01-27 09:51 off999
- 网页版在线游戏(红色警戒网页版在线游戏)
-
棋牌类休闲网络游戏网络对战类游戏角色扮演类大型网上游戏(有以上三种类型游戏)具体分为:动作游戏冒险游戏益智游戏卡片游戏 格斗游戏恋爱游戏养成类游戏 桌面游戏 音乐游戏体育游戏战略游戏射击游...
- 搜狗搜狗输入法下载(搜狗输入法下载官方下载)
-
微信切换搜狗输入法的方法:1、打开手机的设置功能,在设置界面里将列表滑到最下方,然后点击最下方的“系统”。2、在系统的界面里,点击“语言和输入法”。3、在跳转进入的界面的键盘和输入法的下方,点击“默认...
- 免费视频剪辑制作软件(免费使用的视频剪辑软件)
-
非常荣幸回答你的问题,我自己也在做搞笑类视频。也和你一样,先期也是四处找素材。1.b站,我以前经常在那里找,里面会有一些很好的素材,我以前会引用一些油管的视频。都是别人从油管搬运到b站的,我再剪辑一部...
- 德语翻译(德语翻译拍照)
-
德语的英文是Germany,而德国的英文是German。Germany还有德国的,德国人的意思。举例:IhaveaGermancar.-我有一部德国(的)车。Hecomesfrom...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
win7系统还原步骤图解(win7还原电脑系统的步骤)
-
linux软件(linux软件图标)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
