使用Python/BeautifulSoup爬取商品图片失败,问题出在哪?
解决Python爬取威士忌交易所商品图片的问题
你的代码存在两个核心问题:
- 错误地使用
.text获取图片地址:<img>标签的图片链接存储在src属性中,而非标签的文本内容 - 未设置请求头模拟浏览器访问:部分网站会拦截无标识的爬虫请求,导致返回的页面结构与实际不符,无法找到目标元素
正确实现代码
import requests from bs4 import BeautifulSoup # 设置请求头,模拟浏览器访问 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } target_url = "https://www.thewhiskyexchange.com/p/29388/hibiki-harmony" try: # 发送请求获取页面内容 response = requests.get(target_url, headers=headers) # 检查请求是否成功(状态码200) response.raise_for_status() # 解析HTML页面 soup = BeautifulSoup(response.text, 'html.parser') # 定位目标img标签并提取src属性 img_element = soup.find("img", class_="product-main__image") if img_element: image_url = img_element.get('src') print(f"成功获取图片地址:{image_url}") else: print("未找到目标图片元素") except Exception as e: print(f"爬取过程出错:{str(e)}")
关键修改说明
- 提取属性而非文本:使用
img_element.get('src')直接获取<img>标签的src属性值,这是图片的实际链接 - 添加请求头:通过
headers参数模拟真实浏览器的请求标识,避免被网站的反爬机制拦截 - 异常处理优化:增加
response.raise_for_status()捕获请求失败的情况,便于排查网络问题
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

