例:
有时,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能做到吗? 谢谢您 -阿努普