python学习笔记(2)-爬取图片(动态页面)

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

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

爬取图片,关于动态页面的关键信息分析


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'))

        输出结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值