我正在尝试用BeautifulSoup将html解析为文本,但我遇到了一个问题:一些单词被没有空格的标签分割:
<span>word1</span><span>word2</space>所以当我提取文本时,我得到:
word1word2一些句子也会连接到一个句子中:
INTODUCTION There are many...有没有一种简单的方法可以用BeautifulSoup在标签上强制进行单词分隔?也可能是我可以修复一些标签上的句子分隔?
我有几个复杂的html文件。我将它们处理成如下文本:
plain_texts = [BeautifulSoup(html, "html.parser").get_text() for html in htmls]发布于 2018-08-10 23:13:53
您可以使用find_all()
from bs4 import BeautifulSoup
html_doc = """
<!DOCTYPE html><html lang="en"><head><title>words</title></head><body><span>word1</span><span>word2</span></body></html>
"""
soup = BeautifulSoup(html_doc, 'lxml')
for span in soup.find_all('span'):
print(span.text)它分别打印<span>标记之间的文本:
word1
word2发布于 2018-08-11 00:04:36
您可以使用replace_with()方法(docs here)来修补您的汤。但是很多取决于你的HTML的结构:
from bs4 import BeautifulSoup
data = '''
<html><body><span>word1</span><span>word2</space>
'''
soup = BeautifulSoup(data, 'lxml')
for span in soup.select('span'):
span.replace_with(span.text + ' ')
print(soup.text.strip())这将打印:
word1 word2https://stackoverflow.com/questions/51789216
复制相似问题