【问题标题】:BeautifulSoup - How do I extract a substring of a string between tags?BeautifulSoup - 如何在标签之间提取字符串的子字符串?
【发布时间】:2015-06-27 09:54:18
【问题描述】:

我想在 HTML 中搜索“网站:”,然后返回“http://www.aa.com

<br>Website:  <a href="http://www.aa.com">http://www.aa.com</a><br>

由于两个字符串之间有一个子句,所以我不知道该怎么做。

【问题讨论】:

    标签: python html beautifulsoup


    【解决方案1】:

    将您的内容视为树而不是字符串。
    Beautifulsoup 让您可以访问解析树,发出findall('a'),然后使用parent()contents() 导航解析树,您也可以导航到siblings

    【讨论】:

      【解决方案2】:

      您可以搜索文本; NavigableString 对象中的结果,它保留了有关它所在树中位置的信息,这意味着您可以向它询问该元素的下一个兄弟:

      >>> from bs4 import BeautifulSoup
      >>> import re
      >>> sample = '''\
      ... <br>Website:  <a href="http://www.aa.com">http://www.aa.com</a><br>
      ... '''
      >>> soup = BeautifulSoup(sample)
      >>> soup.find(text=re.compile('Website:'))
      u'Website:  '
      >>> soup.find(text=re.compile('Website:')).next_sibling
      <a href="http://www.aa.com">http://www.aa.com</a>
      

      一旦你有 &lt;a&gt; 元素获得 href 属性或包含的文本是微不足道的:

      >>> soup.find(text=re.compile('Website:')).next_sibling['href']
      'http://www.aa.com'
      >>> soup.find(text=re.compile('Website:')).next_sibling.string
      u'http://www.aa.com'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-29
        • 2021-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多