【发布时间】:2019-08-16 15:19:31
【问题描述】:
我想分析 HTML 中的所有可见文本。
摆脱我目前使用的所有 HTML 元素:
from bs4 import BeautifulSoup
import re
soup = BeautifulSoup(test.content, 'html.parser')
#soup_str = soup.get_text() # doesn't help
soup_str = str(soup)
pattern = r'''<.*?>'''
clean_str = re.sub(pattern,' ', soup_str)
这很好用,但我的字符串的开头和结尾仍有一些脚本文本(见下文)。
我还尝试了其他 re 模式,例如 r'''<!-.*}''' 或其他帖子中的建议方法,例如:
for script in soup.find_all('script', src=False):
script.decompose()
第一种方法不起作用,第二种方法在我的情况下删除了很多嵌入文本。
<!--/email_off--",
"validThrough": "2019-09-01",
"hiringOrganization" : {
"@type" : "Organization",
"name" : "NAME"},
"jobLocation":[{"@type":"Place","geo":{"@type":"GeoCoordinates","latitude":"58.1833","longitude":"8.2"},"address":{"@type":"PostalAddress","addressLocality":"Locality","postalCode":"ZIPS","addressCountry":"Country"}}]
}
}
var framefenster = document.getElementsByTagName("iFrame");
var auto_resize_timer = window.setInterval("autoresize_frames()", 400);
function autoresize_frames() {
for (var i = 0; i < framefenster.length; ++i) {
if(framefenster[i].contentWindow.document.body){
var framefenster_size = framefenster[i].contentWindow.document.body.offsetHeight;
if(document.all && !window.opera) {
framefenster_size = framefenster[i].contentWindow.document.body.scrollHeight;
}
framefenster[i].style.height = framefenster_size + 20 + 'px';
}
}
}
谢谢。
【问题讨论】:
-
你能分享你想删除
<script>标签的网址吗? -
@AndrejKesely 确定,link
-
“我想分析 HTML 中的所有可见文本”是什么意思?您只想显示 html 元素的文本吗?
-
所以你想删除部分脚本标签而不是整个脚本标签?
-
@alexbclay,是的,我想要所有 html 元素(p、li、h1 等标签)的所有文本。并在我做进一步的 NLP 分析时保持文本的顺序。
标签: regex python-3.x beautifulsoup