如何用Python requests模块获取带特定data-symbol标签的目标数据
解决方法:定位指定属性的并提取目标数值
你的问题出在定位标签的方式上——find("tr", text="data-symbol=\"CL1:COM\"")是在找标签内的文本内容等于该字符串的,但实际上你要找的是带有data-symbol="CL1:COM"属性的标签,得用属性查找的方式。
修改后的代码如下:
URL = "https://tradingeconomics.com/commodity/crude-oil" page = requests.get(URL, headers=headers) soup = BeautifulSoup(page.content, "html.parser") # 先定位目标表格 target_table = soup.find("table", class_="table table-hover sortable-theme-minimal table-heatmap") # 直接通过data-symbol属性定位<tr>标签 target_tr = target_table.find("tr", {"data-symbol": "CL1:COM"}) # 提取该<tr>下id为"p"的<td>的文本,strip()去除多余空格 price_value = target_tr.find("td", id="p").get_text(strip=True) print(price_value) # 输出:82.86
关键说明:
- 用
{"data-symbol": "CL1:COM"}作为find的参数,直接匹配带有对应属性和值的标签,这是BeautifulSoup处理自定义属性的标准方式。 get_text(strip=True)可以自动去除文本前后的换行、空格等无用字符,直接得到干净的数值字符串。
内容的提问来源于stack exchange,提问作者Isaac Ormand
相关产品推荐
相关产品推荐

