使用BeautifulSoup4从HTML中提取指定class下的整数失败如何解决?
问题根源
- 你使用
find("div", class_= "High")查找时,目标div根本没有High类属性:High是a标签的文本内容,不是元素的类名,按这个规则查找自然返回空结果 soup.find_all(class_="high")返回的是符合条件的元素列表,你需要先取出列表内的tr元素,再从tr节点内部检索目标内容,不需要从根soup重新查找
解决代码
方案1:按节点位置检索(适配你给出的HTML结构)
# 取出find_all返回的第一个tr元素(你给出的结果中仅存在1个符合条件的tr) target_tr = high[0] # 提取第二个td下的div文本,转为整数 result = int(target_tr.find_all("td")[1].get_text(strip=True)) print(result)
方案2:关联文本匹配(更稳妥,避免节点顺序变动)
target_tr = high[0] # 先定位到文本为High的a标签,再向上找相邻的td节点取值 high_a = target_tr.find("a", string="High") value_td = high_a.parent.parent.parent.find_next_sibling("td") result = int(value_td.get_text(strip=True)) print(result)
运行上述代码后result变量存储的就是你需要的整数0。
内容的提问来源于stack exchange,提问作者Harry Patching
相关产品推荐
相关产品推荐

