ajax pool,实战二之爬取今日头条(爬取Ajax数据)

本文介绍了如何分析和利用Ajax技术爬取今日头条中街拍图片的方法。首先,通过开发者模式观察Ajax请求,发现请求的offset参数变化,据此构造get_html()方法获取页面。然后,解析JSON数据获取图片URL,通过get_image_url()方法提取图片链接。接着,使用多进程下载图片并按类别保存。最后,提供了完整代码示例和效果展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标:爬取今日头条街拍图片

关于Ajax:其实现在很多网页不是一次加载完。而是边浏览边加载。

像今日头条中的图片,看完加载的部分,再往下滑动,又加载出来一些图片,

而url并没有变化,此时,页面加载就是Ajax加载。

他的原理同样是发送请求,解析内容,渲染页面,但是他保证了页面的不刷新,url不改变。但是页面却在更新数据。

1、分析Ajax

首先打开今日头条的网页,在搜索栏输入街拍,切换到开发者模式(F12)

点击XMR,因为Ajax在底层是实现了XmlHttpRequest对象,简写XMR,

所以在XMR下都是Ajax请求。

再次刷新下页面,继续往下滑,我们可以看到有一些请求:

935edbc8ae6d175150e51557e09a39ad.png

分析一下Request URL,我们发现其中只有offset参数发生了改变。

其他的参数我们写成一样的就可以了。

这样我们就可以构造一个get_html()方法,实现获取到页面如下。

186973fc25edfe4a7b083fa8e9464816.png

如果你前面的文章都看了,那么理解这个方法是没有难度的。

2、找到图片的地址

fb5a7bbd0bf5f8199a5b0fe378c38556.png

知道了图片在哪里,我们就写个get_image_url()方法,来获取到图片的连接。

a555aa9a03a887f2966ecced9ce3b9b5.png

这里说一下,json数据上一篇有讲如何获取值:数据的存储(一)

3、下载图片并分类保存实现

60c3eceb5f70e64b9f8d2f2a821f98cc.png

这里需要说一下:

os.chdir()是改变当前的路径,因为我用的是Notepad++,所以需要修改一下。

不然图片会存在安装Notepad++的位置。

os.path.exists()存在返回True,否则相反。

os.mkdir()是创建一个文件夹svse_image()方法

用md5加密实现图片名不一样

4、集中整合,实现多进程下载即可

b6b808b64dd153b050fba5accc9ee15a.png

实现多进程,需要导入Pool库

from multiprocessing.pool import Pool

如果前面的文章都看了,这篇文章应该没有难度。重要的是了解Ajax的分析。如何去找。

最后上一下效果图:

2f53724e32b4f6490d1c6b3c2cde21bd.png

5、后台回复头条获取源代码。

完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值