如何用BeautifulSoup提取网页商品名称与价格?求Python实现代码
使用BeautifulSoup提取商品名称与价格的完整实现
我来帮你搞定这个问题!首先咱们得先明确目标网页的结构——一般电商网站的商品列表都会有规律的HTML布局,我先拿一个常见的示例来演示,你可以对照自己的网页截图调整对应的选择器。
假设你的网页截图对应结构
你的截图里应该是这样的典型商品列表布局:
- 每个商品是一个独立的卡片区块(带边框/背景的区域)
- 卡片里有显眼的商品标题(比如“XX品牌无线耳机”)
- 标题附近有价格标签(比如“¥199.00”)
对应的简化HTML结构大概是这样(你可以右键网页→查看网页源代码,找到和你截图匹配的结构):
<div class="product-list"> <div class="product-item"> <h3 class="product-title">XX品牌无线降噪耳机</h3> <span class="product-price">¥299.00</span> </div> <div class="product-item"> <h3 class="product-title">XXX轻薄笔记本电脑</h3> <span class="product-price">¥4999.00</span> </div> </div>
完整Python代码实现
首先确保你安装了必要的库:
pip install beautifulsoup4 requests
然后是提取代码:
from bs4 import BeautifulSoup import requests # 替换成你要爬取的目标网页URL target_url = "https://your-target-website.com/product-page" try: # 发送请求获取网页内容,如果是本地HTML文件,看下面的注释 response = requests.get(target_url) response.encoding = "utf-8" # 解决乱码问题,根据实际情况调整编码 soup = BeautifulSoup(response.text, "html.parser") # 如果你是本地保存的网页文件,替换成这段代码: # with open("your-local-html-file.html", "r", encoding="utf-8") as f: # soup = BeautifulSoup(f, "html.parser") # 找到所有商品项——这里的选择器要和你网页里的商品卡片标签/class对应 all_products = soup.find_all("div", class_="product-item") print("提取到的商品信息:") print("-------------------") # 遍历每个商品,提取名称和价格 for idx, product in enumerate(all_products, 1): # 提取商品名称:替换成你网页里商品标题对应的标签和class name = product.find("h3", class_="product-title").get_text(strip=True) # 提取商品价格:替换成你网页里价格标签对应的标签和class price = product.find("span", class_="product-price").get_text(strip=True) print(f"{idx}. 商品名称: {name} | 价格: {price}") except Exception as e: print(f"出现错误:{e}")
关键说明
- 选择器调整:你需要根据自己网页的实际HTML结构,修改
find_all和find里的标签名(比如h3换成a)和class_值(比如product-title换成goods-name)——右键网页里的商品名称→检查元素,就能看到对应的标签和类名。 - 去除冗余文本:
get_text(strip=True)会自动去掉文本里的多余空格、换行符,让结果更整洁。 - 本地HTML处理:如果你的截图对应本地保存的HTML文件,直接用注释里的代码替换请求部分即可。
预期提取结果
运行代码后,你会得到类似这样的输出:
提取到的商品信息: ------------------- 1. 商品名称: XX品牌无线降噪耳机 | 价格: ¥299.00 2. 商品名称: XXX轻薄笔记本电脑 | 价格: ¥4999.00
内容的提问来源于stack exchange,提问作者wen tian
相关产品推荐
相关产品推荐

