如何用BeautifulSoup区分抓取同class的MyCase多组定价信息?
使用BeautifulSoup区分抓取同class的定价内容
核心思路
目标定价内容都在class="field-value"的div标签中,无法直接通过class单独定位,我们可以通过文本内容特征或**关联相邻标签(如套餐名标签)**来筛选区分。
代码实现
import requests from bs4 import BeautifulSoup # 获取页面内容 url = "https://slashdot.org/software/p/MyCase/" response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") # 1. 抓取单个定价标识 "$39.00/month/user" base_price = None for div in soup.find_all("div", class_="field-value"): text = div.get_text(strip=True) if "$39.00/month/user" in text: base_price = text break print("基础定价标识:", base_price) # 2. 抓取三个套餐的详细定价 plan_prices = {} # 利用套餐名标签(field-label)与定价值的配对关系定位 for label_div in soup.find_all("div", class_="field-label"): label_text = label_div.get_text(strip=True) # 获取相邻的定价值div price_div = label_div.find_next_sibling("div", class_="field-value") if price_div and label_text in ["Basic Plan", "Pro Plan", "Advanced Plan"]: plan_prices[label_text] = price_div.get_text(strip=True) # 输出各套餐定价 for plan, price in plan_prices.items(): print(f"{plan}: {price}")
补充说明
- 如果页面结构中套餐名和定价不在相邻位置,可以直接通过文本内容匹配筛选,比如遍历所有
field-value元素,判断文本是否包含"Basic Plan"等关键词。 - 若页面存在动态加载内容,需要改用
selenium等工具获取渲染后的页面再解析。
内容的提问来源于stack exchange,提问作者BQuist
相关产品推荐
相关产品推荐

