BeautifulSoup - 如何在标签之间提取字符串的子字符串?

时间:2015-04-20 15:17:06

标签: python html beautifulsoup

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

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

我不知道该怎么做,因为两个字符串之间有一个子句。

2 个答案:

答案 0 :(得分:3)

您可以搜索文字;结果在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>

一旦<a>元素获得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'

答案 1 :(得分:1)

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