如何使用Python BeautifulSoup爬取网页图片的src链接
用Python BeautifulSoup提取指定图片src的实现方法
前置准备
首先安装需要的依赖库,执行如下命令:pip install beautifulsoup4 requests lxml
- 不需要爬取线上网页、仅解析本地HTML的话可以不用安装requests
- 不想装lxml的话也可以用Python内置的
html.parser作为解析器,不需要额外安装依赖
实现代码
解析本地/已获取的HTML内容
from bs4 import BeautifulSoup # 填入你拿到的目标网页HTML内容 html_content = """ <div class="image-view-magnifier-wrap"><img alt="2-Piece hoodie and sweatpants Suit sportswear men and women sweatshirt suit jogging pullovers" class="magnifier-image" src="https://ae01.alicdn.com/kf/H5db0c681ba2e4ce3a4cf6963548e6c833/2-Piece-hoodie-and-sweatpants-Suit-sportswear-men-and-women-sweatshirt-suit-jogging-pullovers.jpg_Q90.jpg_.webp" style="top: 0px; left: 0px; width: 100%; height: auto;"><div class="magnifier-loading-wrap" style="display: none;"><div class="magnifier-loading-cover"></div><div class="magnifier-loading"></div></div><div class="magnifier-cover" data-spm-anchor-id="a2g0o.detail.1000017.i0.7fd2579bO2tCaS"></div></div> """ # 初始化BeautifulSoup对象 soup = BeautifulSoup(html_content, 'lxml') # 定位目标图片,两种方式可选: # 方式1:直接通过img标签的class定位 target_img = soup.find('img', class_='magnifier-image') # 方式2:担心class重复的话可以先定位父容器再找img # parent_wrap = soup.find('div', class_='image-view-magnifier-wrap') # target_img = parent_wrap.find('img', class_='magnifier-image') if target_img: # 提取src属性 img_src = target_img.get('src') print(f"提取到的图片链接:{img_src}") else: print("未找到目标图片")
直接爬取线上网页的完整代码
import requests from bs4 import BeautifulSoup # 填入你的目标网页地址 url = "目标网页URL" # 加请求头避免被网站反爬拦截 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } response = requests.get(url, headers=headers) response.encoding = response.apparent_encoding soup = BeautifulSoup(response.text, 'lxml') # 后续定位提取逻辑和上面一致 target_img = soup.find('img', class_='magnifier-image') if target_img: img_src = target_img.get('src') print(f"提取到的图片链接:{img_src}")
注意事项
- 部分网站的图片用了懒加载,真实地址会存在
data-src这类属性里,找不到src的时候可以检查img的其他属性 - 爬取线上网页时请控制请求频率,遵守对应网站的robots协议
内容的提问来源于stack exchange,提问作者Salman Qamar
相关产品推荐
相关产品推荐

