BeautifulSoup使用find(text=...)仅返回文本而非标签的问题求助
解决爬虫find方法仅返回文本而非标签的问题
问题根源:
find(text="xxx")本身就是用来查找文本节点的,返回的是NavigableString对象而非包含该文本的标签元素。之前可能因网站结构嵌套或旧版BeautifulSoup的隐性行为巧合拿到了标签,但这不属于标准用法。解决方案:要获取包含目标文本的
<td>标签,直接指定标签名并匹配文本内容:
修改问题代码行:
cost_of_gas_gj = rate_2_table.find("td", string="Cost of gas per GJ")
如果目标文本存在细微空格、换行或格式差异,可使用正则表达式增强匹配灵活性:
import re cost_of_gas_gj = rate_2_table.find("td", string=re.compile(r"Cost of gas per GJ"))
- 效果验证:修改后执行代码,
cost_of_gas_gj会返回完整的<td width="70%">Cost of gas per GJ</td>标签元素,可正常提取其属性或后续关联内容。
内容的提问来源于stack exchange,提问作者Amon
相关产品推荐
相关产品推荐

