我在网站上有多个带有一类文本的div,如下所示:
<div class="text">
"test1"
<br>
"test2"
<br>
"test3"
<br>
</div>
当我使用以下代码获取这些div中的文本时,我最终在列表中有3个单独的元素,当我真的只想在列表中为每个div添加1个元素。
mytext = tree.xpath('//*[@class="text"]/text()')
print(mytext)
我明白了:
['test1', 'test2', 'test3']
但我真的想要:
['test1\ntest2\test3']
我可以在有或没有换行符的情况下满足,因为我可以将它们剥离出来。我想有一种方法可以用xpath做到这一点。否则,我认为我将不得不使用iterparse()?
答案 0 :(得分:0)
我建议你加入Python中的结果
mytext = tree.xpath('//*[@class="text"]/text()')
print('\n'.join(mytext))
或者,您可以在xpath表达式中应用函数,例如normalize-space,会给你一个字符串,但是你仍然可以在字符串中获取换行符......
tree.xpath('normalize-space(//*[@class="text"])')
-> '"test1""test2""test3"'
答案 1 :(得分:0)
它可以帮助您获取div中的文本,而不是<br/>
可以通过以下方式检索:
//*[@class="text"]/text()[preceding-sibling::br]
从技术上讲,br
代码之间的意思是:
//*[@class="text"]/text()[preceding-sibling::br and following-sibling::br]