如何用Python的BeautifulSoup提取Ibex 35对应的8.133,00数值?
提取Ibex 35对应数值的解决方案
要从目标页面提取Ibex 35的数值,你需要针对页面结构定位到具体元素,而非输出整个页面内容。以下是修改后的代码及步骤说明:
核心思路
- 定位包含"Ibex 35"的表格行:通过文本匹配锁定目标数据所在行
- 提取价格单元格:从目标行中抓取显示数值的元素
- 清理输出结果:去除多余格式,得到目标数值
修改后的代码
from urllib.request import Request, urlopen from bs4 import BeautifulSoup site = 'https://es.investing.com/indices/indices-futures' headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:106.0) Gecko/20100101 Firefox/106.0'} request = Request(site, headers=headers) page = urlopen(request) soup = BeautifulSoup(page, 'html.parser') # 定位Ibex 35所在的表格行 ibex_row = soup.find('tr', text=lambda text: text and 'Ibex 35' in text.strip()) if ibex_row: # 提取该行的价格单元格(页面结构中价格通常在第3个td,可根据实际结构调整索引) price_cell = ibex_row.find_all('td')[2] ibex_price = price_cell.get_text(strip=True) print(f"Ibex 35数值: {ibex_price}") else: print("未找到Ibex 35对应的行")
注意事项
- 若页面结构更新导致定位失败,打开浏览器开发者工具(F12)查看Ibex 35行的HTML属性,比如特定class,可替换为
soup.find('tr', class_='目标class名')来定位。 - 若静态抓取无法获取数据,可能是页面动态加载内容,可考虑用
selenium模拟浏览器加载后再提取。
内容的提问来源于stack exchange,提问作者macbeto
相关产品推荐
相关产品推荐

