我想在HTML中搜索“网站:”,然后返回“http://www.aa.com”
<br>Website: <a href="http://www.aa.com">http://www.aa.com</a><br>
我不知道该怎么做,因为两个字符串之间有一个子句。
答案 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。