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

如何使用Beautiful Soup查找带有特定文本的标签?

狄海
2023-03-14
问题内容

我有以下html(用标记的换行符\n):

...
<tr>
  <td class="pos">\n
      "Some text:"\n
      <br>\n
      <strong>some value</strong>\n
  </td>
</tr>
<tr>
  <td class="pos">\n
      "Fixed text:"\n
      <br>\n
      <strong>text I am looking for</strong>\n
  </td>
</tr>
<tr>
  <td class="pos">\n
      "Some other text:"\n
      <br>\n
      <strong>some other value</strong>\n
  </td>
</tr>
...

如何查找 要查找的 文本 ?下面的代码返回第一个发现的值,因此我需要以某种方式按 固定文本 进行过滤。

result = soup.find('td', {'class' :'pos'}).find('strong').text

更新 。如果我使用以下代码:

title = soup.find('td', text = re.compile(ur'Fixed text:(.*)', re.DOTALL), attrs = {'class': 'pos'})
self.response.out.write(str(title.string).decode('utf8'))

然后它只返回 固定文本:


问题答案:

您可以将正则表达式传递给的text参数findAll,如下所示:

import BeautifulSoup
import re

columns = soup.findAll('td', text = re.compile('your regex here'), attrs = {'class' : 'pos'})


 类似资料:
  • 问题内容: 我可以使用BS轻松遍历通用标签,但是我不知道如何查找特定标签。例如,我怎么能找到所有的出现?BS可以吗? 问题答案: 以下应该工作 有两种搜索标签的方法。 http://www.crummy.com/software/BeautifulSoup/documentation.html 有关更多文本的理解和使用 http://lxml.de/elementsoup.html

  • 问题内容: 我尝试了soup.find(’!-‘),但似乎没有用。提前致谢。 编辑:感谢您有关如何查找所有评论的提示。我有一个后续问题。如何专门搜索评论? 例如,我有以下注释标记: 我真的只想要这些东西。“ 110518”是我要用作搜索目标的日期YYMMDD。但是,我不知道如何在特定的注释标签中找到某些内容。 问题答案: Pyparsing允许您使用内置表达式搜索HTML注释,并附加解析时回调以验

  • 问题内容: 我正在尝试获取HTML文档中包含以下文本模式的元素:#\ S {11} 因此,前者将通过使用以下内容进行匹配: 结果将是这样的: 我可以获取所有匹配的文本(请参见上面的行)。但是我希望文本的父元素匹配,因此我可以将其用作遍历文档树的起点。在这种情况下,我希望所有h2元素都返回,而不是文本匹配。 有想法吗? 问题答案: 印刷品:

  • 我正试图用漂亮的汤刮一个汇合页的身体。当使用Confluence API时,我会得到以下正文(这只是其中的一部分): 我已经搜索了我的屁股,但不知何故,我似乎不明白如何搜索一个段落与特定的文本。 另一件我认识但不明白的事情是:当我使用:搜索所有段落时,我会找到该段落,但它包含了所有子元素的所有文本,因此段落文本如下所示:“System Status:GreenIN Operation”

  • 问题内容: 我想从对象中删除特定对象。 我正在使用和。 根据文档,我们可以使用。 但这会删除所有。如何删除特定班级的? 问题答案: 当然,你可以,或将在通常的方式兴趣s,然后叫上这些div。 例如,如果要删除class的所有div ,则可以使用 如果你想删除一个div与特定的,比方说,你可以做到这一点

  • 问题内容: 如何使用BeautifulSoup搜索仅包含我要搜索的属性的标签? 例如,我要查找所有标签。 如下代码: 获取我想要的所有数据,还获取具有该属性的所有标签 我也试过了: 这什么也不返回(可能是由于正则表达式不好) 我想知道在BeautifulSoup中是否有一种方法可以说“查找唯一属性为”的标签 *例如,如果HTML文档包含以下标记,则为 *UPDATE : 我只希望第一个标签()返回