Python 从HTML标记和纯文本中提取文本(不包装在标记中)
我只在链接标签和尝试使用时获取文本Python 从HTML标记和纯文本中提取文本(不包装在标记中),python,html,python-3.x,beautifulsoup,Python,Html,Python 3.x,Beautifulsoup,我只在链接标签和尝试使用时获取文本 BeautifulSoup.find_all() 我只得到“来自某人”,但没有链接标签之间的文本 有没有办法通过这段代码来重建句子 编辑: 上面的代码只是一个示例,我正在尝试创建一个字典,这样字符串的顺序以及标记内部/外部的部分将是任意的。编辑: 在浏览了一下字典网站后,我提出了以下解决方案。在句子的each标记下,我们可以执行以下操作: BeautifulSoup.contents 希望能有帮助 如果您只想从title属性中提取文本,您可以这样做 fr
BeautifulSoup.find_all()
我只得到“来自某人”,但没有链接标签之间的文本
有没有办法通过这段代码来重建句子
编辑:
上面的代码只是一个示例,我正在尝试创建一个字典,这样字符串的顺序以及标记内部/外部的部分将是任意的。编辑:
在浏览了一下字典网站后,我提出了以下解决方案。在句子的each
标记下,我们可以执行以下操作:
BeautifulSoup.contents
希望能有帮助
如果您只想从
title
属性中提取文本,您可以这样做
from bs4.element import Tag
from bs4.element import NavigableString
res = []
for segment in p.contents:
if isinstance(segment, NavigableString):
res.append(segment)
elif isinstance(segment, Tag):
res.append(segment.text)
final_sentence = ''.join(res[:-2])
从bs4导入美化组
html=“”
从某人的
“”“
soup=BeautifulSoup(html)
打印(soup.text)
#支付
#指控
#从某人的
#银行账户
打印(soup.text.replace('\n','')
#从某人的银行帐户支付费用
实现同样目标的另一种方法:
from bs4 import BeautifulSoup
html = """<p class="qotCJE">
<a href="https://ejje.weblio.jp/content/to+pay" title="to payの意味" class="crosslink">to pay</a>
<a href="https://ejje.weblio.jp/content/charges" title="chargesの意味" class="crosslink">charges</a>
from one's
<a href="https://ejje.weblio.jp/content/bank+account" title="bank accountの意味" class="crosslink">bank account</a>
</p>"""
soup = BeautifulSoup(html)
print(soup.text)
# to pay
# charges
# from one's
# bank account
print(soup.text.replace('\n', ' '))
# to pay charges from one's bank account
尝试
soup.text
。您可以尝试使用此处所述的“get_text()”函数:@Luc这不会给我期望的结果,当我使用get_text()时,我确实会获取标记中的所有文本,但我仍然缺少标记中不存在的部分。您需要将。text
或get_text()
应用到
标记中,不是
s。对,但我尝试这样做是为了一个通用响应(我正在抓取一个web字典),因此插入静态字符串的方法对我来说不起作用。也许我应该在我的帖子中澄清一下哦,好吧,这就是我想要的,似乎我只是对我在树上的位置感到困惑。非常感谢
# assuming text is the html text given above
soup = BeautifulSoup(text, 'html5lib')
a_tags = soup.select('a')
a_strs = (a['title'] for a in a_tags)
final_sentence = "{} {} from one's {}".format(a_strs)
from bs4 import BeautifulSoup
html = """<p class="qotCJE">
<a href="https://ejje.weblio.jp/content/to+pay" title="to payの意味" class="crosslink">to pay</a>
<a href="https://ejje.weblio.jp/content/charges" title="chargesの意味" class="crosslink">charges</a>
from one's
<a href="https://ejje.weblio.jp/content/bank+account" title="bank accountの意味" class="crosslink">bank account</a>
</p>"""
soup = BeautifulSoup(html)
print(soup.text)
# to pay
# charges
# from one's
# bank account
print(soup.text.replace('\n', ' '))
# to pay charges from one's bank account
from bs4 import BeautifulSoup
content = """
<p class="qotCJE">
<a href="https://ejje.weblio.jp/content/to+pay" title="to payの意味" class="crosslink">to pay</a>
<a href="https://ejje.weblio.jp/content/charges" title="chargesの意味" class="crosslink">charges</a>
from one's
<a href="https://ejje.weblio.jp/content/bank+account" title="bank accountの意味" class="crosslink">bank account</a>
</p>
"""
soup = BeautifulSoup(content,"lxml")
print(soup.get_text(" ",strip=True))
to pay charges from one's bank account