2016-08-06 6 views
0

Я использую robobrowser для анализа некоторого содержимого html. У меня есть BeautifulSoup внутри. Как я могу найти комментарий с указанной строкой внутриКак я могу найти комментарий с указанной текстовой строкой

<html> 
<body> 
<div> 
<!-- some commented code here!!!<div><ul><li><div id='ANY_ID'>TEXT_1</div></li> 
<li><div>other text</div></li></ul></div>--> 
</div> 
</body> 
</html> 

На самом деле мне нужно, чтобы получить text_1, если я знаю ANY_ID Спасибо

ответ

0

text Используйте аргументы и проверьте тип быть Comment. Затем загрузите содержимое с BeautifulSoup снова и найти нужный элемент, id:

from bs4 import BeautifulSoup 
from bs4 import Comment 

data = """ 
<html> 
<body> 
<div> 
<!-- some commented code here!!!<div><ul><li><div id='ANY_ID'>TEXT_1</div></li> 
<li><div>other text</div></li></ul></div>--> 
</div> 
</body> 
</html> 
""" 

soup = BeautifulSoup(data, "html.parser") 
comment = soup.find(text=lambda text: isinstance(text, Comment) and "ANY_ID" in text) 

soup_comment = BeautifulSoup(comment, "html.parser") 
text = soup_comment.find("div", id="ANY_ID").get_text() 
print(text) 

Печать TEXT_1.

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