网页爬虫抓取百度图片(百度图片的网页是一个动态页面,它的图片有什么规律? )
优采云 发布时间: 2022-01-15 08:19网页爬虫抓取百度图片(百度图片的网页是一个动态页面,它的图片有什么规律?
)
前言:
我们抓取的 网站 图片都是静态的。在页面上右击查看源代码可以看到图片在网页中的位置。这样,我们使用requests库获取页面源代码后,就可以使用bs4库解析标签,将图片保存到本地。
我们在看百度图片的时候,右键-勾选-元素,点击箭头,然后点击带箭头的图片,图片的位置和样式就会显示出来。但是,当我们右键查看网页源代码时,出来的是一大堆JavaScript代码,并没有图片链接等信息。为什么是这样?
这是因为百度图片的网页是动态页面,其网页的原创数据实际上并没有图片。通过运行JavaScript,将图片数据插入到网页的html标签中。结果是,虽然我们可以在开发者工具中看到这个html标签,但实际上我们在查看网页的原创数据时,并没有这个标签,只是在运行时加载和渲染,我们应该怎么做呢?这个时候做什么?毛呢布?这个图片怎么下载?这里我们换个思路,抓包。
我们点击Network-XHR,当我们向下滑动滚动条时,会一直出现一个名为:acjson?tn=resultjson&ipn=...的请求,点击它,点击Preview,我们看到这是一个json数据,点击数据,我们看到有30条数据,每条数据对应一张图片。
所以我们知道百度图片一开始只加载了30张图片。当我们向下滑动滚动条时,页面会动态加载 1 条 json 数据,每条 json 数据收录 30 条信息,信息中还收录图片的 URL,JavaScript 会解析并显示。这样,每次滚动到最后,就会多出 30 张图片。
那么,这些一直出现的json数据的规律是什么呢?我们点击Headers,然后对比这些json数据的header信息。通过对比,我们发现headers下Query String Parameters中的大部分字段保持不变,只有pn字段保持30步递增。太棒了!在这里找到规则!