пожалуйста, обратите внимание на следующее HTML:
<html>
<body>
<ul>
<li><h5>Title 1</h5><div><span>Apples</span></li>
<li><h5>Title 2</h5><div><span>Bananas</span></li>
<li><h5>Title 3</h5><div><span>Grapes</span></li>
<li><h5>Title 4</h5><div><span>Pears</span></li>
</ul>
</body>
</html>
Используя l xml, я легко могу получить h5:
from lxml import html
example_html = '''<html>
<body>
<ul>
<li><h5>Title 1</h5><div><span>Apples</span></li>
<li><h5>Title 2</h5><div><span>Bananas</span></li>
<li><h5>Title 3</h5><div><span>Grapes</span></li>
<li><h5>Title 4</h5><div><span>Pears</span></li>
</ul>
</body>
</html>'''
tree = html.fromstring(example_html)
element_list = tree.xpath('//h5')
# List comprehension to get text
result = [i.text for i in element_list]
print(result)
Из этого кода, конечно, результат будет:
['Title 1', 'Title 2', 'Title 3', 'Title 4']
Но мне нужно знать, как получить такой результат:
['Title 1', 'Apples', 'Title 2', 'Bananas', 'Title 3', 'Grapes', 'Title 4', 'Pears']
Я пытался изменить код следующим образом:
collector = []
for i in element_list:
h5 = i.xpath('//h5')
collector.append(h5[0].text)
span = i.xpath('//span')
collector.append(span[0].text)
print(collector)
Но получил этот результат (близко, но не совсем):
['Title 1', 'Apples', 'Title 1', 'Apples', 'Title 1', 'Apples', 'Title 1', 'Apples']
Возможно ли это как-то? Я получил, насколько выше код, и любая помощь будет принята с благодарностью. Спасибо, любезно.