Beautifulsoup = извлечь содержимое в теге - PullRequest
19 голосов
/ 14 мая 2011

Я бы хотел извлечь контент "Hello world". Обратите внимание, что на странице есть также кратные <table> и аналогичные <td colspan="2">.

я попробовал следующее:

hello = soup.find(text='Name: ')
hello.findPreviousSiblings

Но ничего не вернулось.

Вот фрагмент кода:

<table border="0" cellspacing="2" width="800">
<tr> 
<td colspan="2"><b>Name: </b>Hello world</td>
</tr>
<tr>

Кроме того, у меня также возникают проблемы со следующим извлечением «Моего домашнего адреса»:

<td><b>Address:</b></td>

<td>My home address</td>

Я также использую тот же метод для поиска text = "Address:", но как мне перейти к следующей строке и извлечь содержимое <td>?

Ответы [ 2 ]

21 голосов
/ 09 января 2013

Оператор contents хорошо работает для извлечения text из <tag>text</tag>.


<td>My home address</td> пример:

s = '<td>My home address</td>'
soup =  BeautifulSoup(s)
td = soup.find('td') #<td>My home address</td>
td.contents #My home address

<td><b>Address:</b></td> пример:

s = '<td><b>Address:</b></td>'
soup =  BeautifulSoup(s)
td = soup.find('td').find('b') #<b>Address:</b>
td.contents #Address:
14 голосов
/ 14 мая 2011

используйте следующий вместо

>>> s = '<table border="0" cellspacing="2" width="800"><tr><td colspan="2"><b>Name: </b>Hello world</td></tr><tr>'
>>> soup = BeautifulSoup(s)
>>> hello = soup.find(text='Name: ')
>>> hello.next
u'Hello world'

следующий и предыдущий позволяют перемещаться по элементам документа в том порядке, в котором они были обработаны синтаксическим анализатором во время работы методов одного уровняс парсингом дерева

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...