2
Я пытаюсь извлечь весь контент (теги и текст) из одного основного тега на странице html. Например:Как получить весь контент между двумя тегами html в Python?
`my_html_page = '''
<html>
<body>
<div class="post_body">
<span class="polor">
<a class="p-color">Some text</a>
<a class="p-color">another text</a>
</span>
<a class="p-color">hello world</a>
<p id="bold">
some text inside p
<ul>
<li class="list">one li</li>
<li>second li</li>
</ul>
</p>
some text 2
<div>
text inside div
</div>
some text 3
</div>
<div class="post_body">
<a>text inside second main div</a>
</div>
<div class="post_body">
<span>third div</span>
</div>
<div class="post_body">
<p>four div</p>
</div>
<div class="post">
other text
</div>
</body>
<html>'''`
И мне нужно, чтобы получить с помощью XPath ("(//div[@class="post_body"])[1]"
):
`
<div class="post_body">
<span class="polor">
<a class="p-color">Some text</a>
<a class="p-color">another text</a>
</span>
<a class="p-color">hello world</a>
<p id="bold">
some text inside p
<ul>
<li class="list">one li</li>
<li>second li</li>
</ul>
</p>
some text 2
<div>
text inside div
</div>
some text 3
</div>
`
Все внутри тега <div class="post_body">
Я прочитал this topic, но это не помогло.
Мне нужно создать DOM парсером beautifulsoup в lxml.
import lxml.html.soupparser
import lxml.html
text_inside_tag = lxml.html.soupparser.fromstring(my_html_page)
text = text_inside_tag.xpath('(//div[@class="post_body"])[1]/text()')
И я могу извлечь только текст внутри тега, но мне нужно извлечь текст с помощью тегов.
Если я попытался использовать это:
for elem in text.xpath("(//div[@class="post_body"])[1]/text()"):
print lxml.html.tostring(elem, pretty_print=True)
У меня есть ошибка: TypeError: Type '_ElementStringResult' cannot be serialized.
Помощь, пожалуйста.
Ожидаете ли вы только текст в выводе? – Vilva
@Vilva Нет, мне нужен текст с тегами на выходе. ' text text text