h3标签中 有script标签 script标签内有 document.write 导致soup无法获取script标签外的文本内容
时间: 2024-04-28 13:22:47 浏览: 146
BeautifulSoup 获取 a标签里的文本内容
要获取h3标签中script标签外的文本内容,可以使用BeautifulSoup库中的find_all方法来查找所有的h3标签,然后再通过.text属性获取其中的文本内容。但是要注意,如果h3标签内包含了script标签并且有document.write语句,那么使用BeautifulSoup库解析时,可能会无法获取到script标签外的文本内容。
为了解决这个问题,可以使用正则表达式来匹配并替换掉script标签以及其中的内容,然后再进行解析。下面是一个示例代码,用于实现该功能:
```python
import re
from bs4 import BeautifulSoup
# 模拟HTML代码的字符串
html_doc = """
<html>
<head>
<title>第一个 HTML 页面</title>
</head>
<body>
<h3>This is a heading</h3>
<script type="text/javascript">
document.write("This is a script tag");
</script>
<p>This is a paragraph</p>
</body>
</html>
"""
# 使用正则表达式替换掉script标签及其中的内容
pattern = re.compile(r'<script.*?</script>')
html_doc = re.sub(pattern, '', html_doc)
# 创建一个BeautifulSoup对象,获取页面正文
soup = BeautifulSoup(html_doc, "lxml")
# 查找所有的h3标签,并获取其中的文本内容
h3_tags = soup.find_all('h3')
for h3 in h3_tags:
print(h3.text)
```
在上述代码中,首先使用正则表达式将script标签及其中的内容替换为空字符串,然后再使用BeautifulSoup库解析剩余的HTML代码。最后,通过find_all方法查找所有的h3标签,并通过.text属性获取其中的文本内容。这样就可以获取到h3标签中script标签外的文本内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [解析数据的Beautiful Soup 模块](https://blog.csdn.net/weixin_41905135/article/details/122804277)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [爬虫必备Beautiful Soup包使用详解](https://blog.csdn.net/xo3ylAF9kGs/article/details/124722280)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文