爬取图片,关于动态页面的关键信息分析
Python版本:3.9.6
ide:PyCharm 2021.1.3
以百度图片为例,打开百度图片的首页,点击城市建筑摄影专题,可以看到很多精美的图片,F12审查元素后发现所有的图片都在<div id="imgList">标签下。

类似地,尝试使用requests库获取html内容解析图片的链接。
import requests
from bs4 import BeautifulSoup
url = 'https://image.baidu.com/search/albumsdetail?tn=albumsdetail&word=%E5%9F%8E%E5%B8%82%E5%BB%BA%E7%AD%91%E6%91%84%E5%BD%B1%E4%B8%93%E9%A2%98&fr=searchindex_album%20&album_tab=%E5%BB%BA%E7%AD%91&album_id=7&rn=30'
req = requests.get(url)
html = BeautifulSoup(req.text, 'lxml')
print(html)
div = html.find('#imgList').find_all('a', class_='albumsdetail-item')
urls = []
for each in div:
urls.append(each.get('href'))
程序运行时,会看到下面的报错:

这个报错可以百度到,是重定向太多次,只需要在get请求加上"allow_redirects=False"禁止重定向即可。我们加好属性并打印下获取到的html,再次运行程序。
import requests
from bs4 import BeautifulSoup
url = 'https://image.baidu.com/search/albumsdetail?tn=albumsdetail&word=%E5%9F%8E%E5%B8%82%E5%BB%BA%E7%AD%91%E6%91%84%E5%BD%B1%E4%B8%93%E9%A2%98&fr=searchindex_album%20&album_tab=%E5%BB%BA%E7%AD%91&album_id=7&rn=30'
req = requests.get(url, allow_redirects=False)
html = BeautifulSoup(req.text, 'lxml')
print(html)
div = html.find('#imgList').find_all('a', class_='albumsdetail-item')
urls = []
for each in div:
urls.append(each.get('href'))
输出结果如下:

本文介绍如何使用Python爬取动态加载的图片,以百度图片为例,通过分析请求头、处理重定向问题,解析JSON数据,实现动态加载内容的抓取。详细讲述了动态加载的判断、网络请求的观察、图片URL的获取以及如何根据请求规律获取更多图片。
最低0.47元/天 解锁文章
3417

被折叠的 条评论
为什么被折叠?



