BeautifulSoup 4.9.0后提取<script>标签内容的首选方法是什么?
提取Script标签内容的首选方法
自从BeautifulSoup4 4.9.0版本更新后,text属性会忽略script标签里的内容,不过有两个更可靠的方法可以提取目标文本:
使用
.string属性:这是最直接的方式,当script标签内部只有纯文本内容时(大多数场景都是如此),直接调用这个属性就能拿到你想要的内容。示例代码:from bs4 import BeautifulSoup html = '<script>wanted text</script>' soup = BeautifulSoup(html, 'html.parser') script_tag = soup.find('script') content = script_tag.string print(content) # 输出: wanted text使用
.contents获取子节点文本:如果script标签内存在特殊嵌套结构(虽然极少出现),可以通过.contents访问标签的子节点列表,取第一个元素即可得到文本内容:content = script_tag.contents[0]
另外要注意,官方提到该变更暂时不支持html5lib树构建器,用它的话text属性还能正常工作,但这是已知bug后续会修复,所以还是优先用上面两种方法更稳妥,完全不需要手动剥离<script>和</script>标签。
内容的提问来源于stack exchange,提问作者Kyryl Havrylenko




