Xpath的。如何选择两个标签之间的所有文字?

时间:2018-03-29 19:38:56

标签: python xpath

这是html源代码

<div class="text"><a name="dst100030"></a><pre id="p73" class="P"><span class="blk">│Лабораторные методы исследования                                         │</span></pre><pre id="p74" class="P"><span class="blk">├────────────┬───────────────────────────┬─────────────────┬──────────────┤</span></pre><a name="dst100031"></a>

我需要在两个<a name="dst100030">标记之间获取所有文本。 我试过的是

response.xpath('//pre//text()[preceding-sibling::a[@name="dst100030"] and following-sibling::a[@name="dst100031"]]')

但它返回空列表。我哪里错了?

2 个答案:

答案 0 :(得分:3)

<a><pre>的兄弟,而不是文字()。您可以改为使用preceding::a(对following也是如此)。

答案 1 :(得分:-2)

使用re:

解决您所问的问题

注意:正如其他人在评论中提到的那样,这可能不是最佳解决方案 - 您最好使用正确的解析器。

import re

source_code ='<div class="text"><a name="dst100030"></a><pre id="p73" class="P"><span class="blk">│Лабораторные методы исследования│</span></pre><pre id="p74" class="P"><span class="blk">├────────────┬───────────────────────────┬─────────────────┬──────────────┤</span></pre></a name="dst100031"></a>'
text = re.findall('<a name="dst100030">(.*)</a name="dst100031">', source_code)
print(text)