Python 任何类似于;直至;在CSS选择器中?

Python 任何类似于;直至;在CSS选择器中?,python,web-scraping,css-selectors,lxml,Python,Web Scraping,Css Selectors,Lxml,我希望在“tracked_by”id到“buzz_off”id之间获得可用的电影名称。我已经创建了一个选择器,可以在“tracked_by”id之后获取名称。但是,我的意图是让脚本进行解析,直到找到“buzz_off”id。名称所在的元素是: html = ''' <div class="list"> <a id="allow" name="allow"></a> <h4 class="cluster">Allow</h4> &

我希望在“tracked_by”id到“buzz_off”id之间获得可用的电影名称。我已经创建了一个选择器,可以在“tracked_by”id之后获取名称。但是,我的意图是让脚本进行解析,直到找到“buzz_off”id。名称所在的元素是:

html = '''
<div class="list">
  <a id="allow" name="allow"></a>
 <h4 class="cluster">Allow</h4>
 <div class="base min"><a href="...">Sally</a></div> 
 <div class="base max"><a href="..">Blood Diamond</a></div>
  <a id="tracked_by" name="tracked_by"></a>
 <h4 class="cluster">Tracked by</h4>
 <div class="base min"><a href="..">Gladiator</a></div>
 <div class="base max"><a href="..">Troy</a></div>
   <a id="buzz_off" name="buzz_off"></a>
 <h4 class="cluster">Buzz-off</h4>
 <div class="base min"><a href="..">Heat</a></div>
 <div class="base max"><a href="..">Matrix</a></div>
</div>
'''

from lxml import html as htm
root = htm.fromstring(html)
for item in root.cssselect("a#tracked_by ~ div.base a"):
    print(item.text)
我得到的结果是:

Gladiator
Troy
Heat
Matrix
我想得到的结果是:

Gladiator
Troy

顺便说一句,我想用这个选择器来解析名称而不是样式。

是css选择器的参考。正如您所看到的,它没有任何形式的逻辑,因为它不是一种编程语言。在python中,您必须使用
而不是
循环,一次处理一个元素,或者将它们附加到列表中。

是css选择器的参考。正如您所看到的,它没有任何形式的逻辑,因为它不是一种编程语言。您必须在python中使用
而不是
循环,并一次处理一个元素,或者将它们附加到列表中。

为此您需要额外的代码。你需要额外的代码。谢谢你的回答,Treehee。如果是这样的话,我不认为有必要借用python的任何逻辑来处理它;相反,我可以很容易地使用表达式“//div[./previous sibling::h4[1]=”Tracked by']//text()”来使用xpath,它可以很好地达到目的。在大多数情况下,当我从web上抓取数据时,我更喜欢css选择器,所以我也想了解它的局限性。谢谢。谢谢你的回答,崔赫。如果是这样的话,我不认为有必要借用python的任何逻辑来处理它;相反,我可以很容易地使用表达式“//div[./previous sibling::h4[1]=”Tracked by']//text()”来使用xpath,它可以很好地达到目的。在大多数情况下,当我从web上抓取数据时,我更喜欢css选择器,所以我也想了解它的局限性。谢谢
Gladiator
Troy