我一直在尝试创建一个xpath,该xpath应该位于Yes
元素中的前三个p
直到Demarcation
元素中的文本h1
为止。我在下面的脚本中使用的现有文本可以找到p
元素中的所有文本。但是,我找不到前进的任何想法。只要考虑一下我已经创建的一个占位符即可。
如何创建一个xapth以便能够在Yes
元素中找到前三个p
,而没有其他内容?
到目前为止我的尝试:
from lxml.html import fromstring
htmldoc="""
<li>
<a>Nope</a>
<a>Nope</a>
<p>Yes</p>
<p>Yes</p>
<p>Yes</p>
<h1>Demarcation</h1>
<p>No</p>
<p>No</p>
<h1>Not this</h2>
<p>No</p>
<p>Not this</p>
</li>
"""
root = fromstring(htmldoc)
for item in root.xpath("//li/p"):
print(item.text)
答案 0 :(得分:2)
尝试以下操作选择标题executables:
state-exe:
main: Main.hs
source-dirs: app
ghc-options:
- -threaded
- -rtsopts
- -with-rtsopts=-N
dependencies:
- state
- transformers
的兄弟姐妹之前的段落
"Demarcation"
答案 1 :(得分:0)
您似乎正在尝试依赖包含h1
的{{1}}标记,所以从它开始:
Demarcation
这个想法是获取以前的//h1[contains(., "Demarcation")]/preceding-sibling::p[contains(., "Yes")][position()<4]
元素,我添加了p
,所以您只有三个,如果只需要全部position()<4
,则可以删除它:
p