Используя findSll BeautifulSoup для поиска innerText HTML-элемента, чтобы получить тот же результат, что и поиск атрибутов? - PullRequest
5 голосов
/ 05 апреля 2010

Например, если я ищу по атрибуту элемента, например, id:

soup.findAll('span',{'id':re.compile("^score_")})

Я получаю список всего элемента span, который соответствует (что мне нравится).

Но если я попытаюсь выполнить поиск по внутреннему тексту html-элемента следующим образом:

soup.findAll('a',text = re.compile("discuss|comment")) 

Я получаю обратно только внутреннюю часть элемента обратно, которая соответствует целому элементу, а не тегам и атрибутам, как было бы выше.

Возможно ли это сделать, не найдя совпадения и не получив его родителя?

Спасибо.

1 Ответ

6 голосов
/ 05 апреля 2010

Вы не вернете текст. Вы получаете NavigableString с текстом. Этот объект имеет методы для перехода к родителю и т. Д.

from BeautifulSoup import BeautifulSoup
import re

soup = BeautifulSoup('<html><p>foo</p></html>')

r = soup.findAll('p', text=re.compile('foo'))

print r[0].parent

печать

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