爬取图片,关于动态页面的关键信息分析
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'))
输出结果如下: