【发布时间】: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
我想在 HTML 中搜索“网站:”,然后返回“http://www.aa.com”
<br>Website: <a href="http://www.aa.com">http://www.aa.com</a><br>
由于两个字符串之间有一个子句,所以我不知道该怎么做。
【问题讨论】:
标签: python html beautifulsoup
将您的内容视为树而不是字符串。
Beautifulsoup 让您可以访问解析树,发出findall('a'),然后使用parent() 和contents() 导航解析树,您也可以导航到siblings。
【讨论】:
您可以搜索文本; 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'
【讨论】: