当前位置: 首页 > 面试题库 >

获取HTML标签的文本,而没有内部子标签的文本

宗政财
2023-03-14
问题内容

例:

有时,HTML是:

<div id="1">
    <div id="2">
        this is the text i do NOT want
    </div>
    this is the text i want here
</div>

其他时候只是:

<div id="1">
    this is the text i want here
</div>

我只想在一个标签中获取文本,而忽略所有其他子标签。如果我运行该.text属性,则两者都会得到。


问题答案:

更新 为使用更通用的方法(请参阅编辑历史记录以获取原始答案):

您可以通过测试外部div的子元素是否是的实例来提取它们NavigableString

from bs4 import BeautifulSoup, NavigableString

html = '''<div id="1">
    <div id="2">
        this is the text i do NOT want
    </div>
    this is the text i want here
</div>'''

soup = BeautifulSoup(html)    
outer = soup.div
inner_text = [element for element in outer if isinstance(element, NavigableString)]

这将导致外部div元素中包含一个字符串列表。

>>> inner_text
[u'\n', u'\n    this is the text i want here\n']
>>> ''.join(inner_text)
u'\n\n    this is the text i want here\n'

对于第二个示例:

html = '''<div id="1">
    this is the text i want here
</div>'''
soup2 = BeautifulSoup(html)    
outer = soup2.div
inner_text = [element for element in outer if isinstance(element, NavigableString)]

>>> inner_text
[u'\n    this is the text i want here\n']

这也适用于其他情况,例如,外部div的text元素在任何子标签之前,在子标签之间,多个文本元素之间或根本不存在。



 类似资料:
  • 问题内容: 使用BeautifulSoup bs4时,如何从HTML标签内部获取文本?当我运行此行时: 我得到这样的标签: 现在我只想获取其中的内部文本,不带标签。怎么做? 问题答案: 使用.text从标记中获取文本。 要不就 要打开文件并使用文本作为名称,请像使用其他任何字符串一样简单地使用它:

  • 问题内容: 我正在尝试在特定标签内获取文本。所以,如果我有: 我希望能够检索文本。 我正在尝试使用正则表达式。如果保持不变,我可以做到,但事实并非如此。 到目前为止,我有这个: 我认为最后两个部分-可以-但我不知道第一部分要做什么。 问题答案: 正如他们所说的,不要使用正则表达式来解析HTML。如果您知道这些缺点,则可以摆脱它。尝试 将遍历字符串中的所有匹配项。 它不会处理嵌套标签,并且会忽略标签

  • 我正在尝试使用漂亮的汤解析网页(这是我有生以来第一次),我遇到了一个奇怪的错误。html结构中的标记中有一个标记,我一直收到错误 html标签的结构如下:页面上项目的整个网格都在div类"properties_reviews"中,然后进入div类"preview"中,用于特定项目,该类"preview"还有两个类:照片的"preview-media"和我需要解析的文本信息的"preview-con

  • 问题内容: 我在下面有HTML代码,并且文本周围没有任何HTML。有什么方法可以隐藏 “ p”标记后 的文本“ Enter” ? 无法用div或任何其他标签包装它,因此我需要一些不同的决定,例如JavaScript或CSS? 问题答案: 我会考虑使用font-size的CSS hack: 另一个想法是:

  • 问题内容: 我正在使用Jsoup库读取URL。该网址的一些标记中包含文本。我可以在每个标签中获取文本吗?请注意,我不要求解析Javascript文件,因为我已经知道JSoup不允许这样做。URL的实际源代码在script标签中包含文本,我需要这样做。 这是源代码中的脚本标签之一: 问题答案: 是。您可以使用Element#getElementsByTag()获得所有标签。每个脚本标签将由DataN

  • 问题内容: 我正在做漂亮的汤。我有一个html字符串: 我如何检索“获取此”,而忽略“ 忽略此 ” 谢谢 问题答案: 您可以获取文本,而不必递归检索子文本: 这与文本相对于孩子的位置无关:

  • 问题内容: 我将列出用户将从中选择的地址列表,然后将返回地址文本。我需要使用,因为不允许换行。 在Label类中,踢球者没有类似方法… 我知道我可以做类似的事情: 但是,我有一个5-20地址的列表,其中包含多个单独的,这将很困难b / c,我无法识别有效标签的位置。我只想访问激活的窗口小部件内容。 是否使用了正确的小部件? 问题答案: 要从标签中获取值,可以使用方法,该方法可用于获取任何配置选项的

  • 假设我在一个页面上有3个文本框,定义如下。 我将把值“Open”作为参数传递给JSoup,JSoup应该返回如下数据(这是中间文本框的详细信息)。 JSoup能做到吗? 谢谢您 -阿努普