如何使用BeautifulSoup爬取HTML中品牌、口味等产品信息为键值对
解决方法
你可以通过遍历所有属性行的<tr>标签,分别提取左侧的属性名和右侧的属性值,直接拼装成你需要的键值对格式,参考代码如下:
from bs4 import BeautifulSoup # 此处替换为你实际爬取到的页面HTML内容 html_content = """ <tr class="a-spacing-small"> <td class="a-span3"> <span class="a-size-base a-text-bold">Flavour</span> </td> <td class="a-span9"> <span class="a-size-base">Green Apple</span> </td> </tr> <tr class="a-spacing-small"> <td class="a-span3"> <span class="a-size-base a-text-bold">Brand</span> </td> <td class="a-span9"> <span class="a-size-base">Carabau</span> </td> </tr> """ soup = BeautifulSoup(html_content, 'html.parser') product_info = {} # 遍历所有属性行的tr标签 for tr in soup.find_all('tr', class_='a-spacing-small'): # 提取左侧属性名 key_td = tr.find('td', class_='a-span3') # 提取右侧对应属性值 value_td = tr.find('td', class_='a-span9') if key_td and value_td: key = key_td.get_text(strip=True) value = value_td.get_text(strip=True) product_info[key] = value # 按你需要的格式输出 for k, v in product_info.items(): print(f"{k} - {v}")
输出结果
Flavour - Green Apple Brand - Carabau
逻辑说明
- 首先定位所有class为
a-spacing-small的tr标签,每一行对应一个产品属性项 - 每行内第一个class为
a-span3的td文本就是属性名(比如口味Flavour、品牌Brand) - 每行内第二个class为
a-span9的td文本就是对应的属性值 - 键值对存入字典后既可以按要求格式打印,也可以直接用于后续数据处理
内容的提问来源于stack exchange,提问作者Kanchan
相关产品推荐
相关产品推荐

