<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>
我正在尝试重建句子&#34;从某个银行帐户支付费用&#34;这分为上面的HTML代码。我的问题是句子的一部分没有包装在HTML标签内。当我尝试使用时:
BeautifulSoup.find_all()
我只在链接标记和我尝试使用
之间获取文本BeautifulSoup.contents
我只能从一个人那里得到&#34;&#34;但不是链接标签之间的文本。
有没有办法完成这段代码并重建句子?
修改 上面的代码只是一个例子,我试图刮字典,所以字符串的顺序和哪些部分将是内部/外部标签将是任意的。
答案 0 :(得分:1)
修改强>
在深入挖掘字典网站之后,我想出了以下解决方案。在句子的每个<p>
标记下,我们可以执行以下操作:
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])
希望有所帮助
如果您只想从title
属性中提取文字,则可以
# 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)
答案 1 :(得分:1)
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
答案 2 :(得分:0)
实现相同目标的另一种方法:
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