2015-04-20 4 views

ответ

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

Подумайте о своем содержании как о дереве, а не о строке.
Beautifulsoup дает вам доступ к дереву разбора, выдает findall('a'), затем перемещайтесь по парсету с parent() и contents(), вы также можете перейти на siblings.

Смежные вопросы