Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从HTML标记和纯文本中提取文本(不包装在标记中)_Python_Html_Python 3.x_Beautifulsoup - Fatal编程技术网

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