Beautiful Soup - определить тег на основе позиции рядом с комментарием - PullRequest
4 голосов
/ 08 марта 2011

Я использую Beautiful Soup.

Есть ли какой-нибудь способ, которым я могу заполучить тег на основе его положения рядом с комментарием (что-то не входит в дерево разбора)?

Например, скажем, у меня есть...

<html>
<body>
<p>paragraph 1</p>
<p>paragraph 2</p>
<!--text-->
<p>paragraph 3</p>
</body>
</html>

В этом примере, как я могу определить <p>paragraph 2</p>, если я ищу комментарий "<!--text-->"?

Спасибо за любую помощь.

1 Ответ

6 голосов
/ 08 марта 2011

Комментарии появляются в дереве разбора BeautifulSoup, как и любой другой узел.Например, чтобы найти комментарий с текстом some comment text, а затем распечатать предыдущий <p> элемент, который вы можете сделать:

from BeautifulSoup import BeautifulSoup, Comment

soup = BeautifulSoup('''<html>
<body>
<p>paragraph 1</p>
<p>paragraph 2</p>
<!--some comment text-->
<p>paragraph 3</p>
</body>
</html>''')

def right_comment(e):
    return isinstance(e, Comment) and e == 'some comment text'

e = soup.find(text=right_comment)

print e.findPreviousSibling('p')

..., который выведет:

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