Python XPath选择直到下一个标记

Python XPath选择直到下一个标记,python,xpath,scrapy,xpath-1.0,Python,Xpath,Scrapy,Xpath 1.0,我正在抓取“地理和气候”一段和所有text()元素,直到下一个h2标记出现(即“人口统计”) 我不想在这里抢桌子 到目前为止,我尝试的XPath代码是//span[@id='Geography\u and_climate']/following::p,它选择所有内容直到页面结束 我在StackOverflow上尝试了answers的类似问题代码,但对我来说没有任何效果,也许我不是理解他们代码的专家。尝试使用此XPath选择地理和气候之后以及人口统计之前的所有段落 您可以使用循环来获取下一个元素,

我正在抓取“地理和气候”一段和所有
text()
元素,直到下一个
h2
标记出现(即“人口统计”)

我不想在这里抢桌子

到目前为止,我尝试的XPath代码是
//span[@id='Geography\u and_climate']/following::p
,它选择所有内容直到页面结束


我在StackOverflow上尝试了answers的类似问题代码,但对我来说没有任何效果,也许我不是理解他们代码的专家。

尝试使用此XPath选择地理和气候之后以及人口统计之前的所有段落


您可以使用循环来获取下一个
元素,并检查它是否已经是
h2
。@furas我不知道怎么做。我正在考虑使用
item=item.findNextSibling()进行循环
直到
item.name==“h2”
但是它是
BeautifulSoup
中的代码-如果您使用
scrapy
,那么它就没那么有用了。非常感谢。它就像一个符咒。但我还是不明白它是怎么工作的。你能解释一下吗?@Haseeb,这是
//p[previous sibling::h2[position()=1和span[@id='Geography\u and\u climate']]]
的较短版本,这意味着如果其前一个标题包含子span,则返回所有段落
@id=“Geography\u and\u climate”
//p[preceding-sibling::h2[1][span[@id='Geography_and_climate']]]