在CSS选择器中有类似于“until”的东西吗?

时间:2017-08-31 11:03:19

标签: python web-scraping css-selectors lxml

我想在“tracked_by”id到“buzz_off”id之间获取电影名称。我已经创建了一个选择器,可以在“tracked_by”id之后获取名称。但是,我的目的是让脚本执行解析UNTIL找到“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)

我尝试过的选择器(也在上面的脚本中提到过):

a#tracked_by ~ div.base a

结果我有:

Gladiator
Troy
Heat
Matrix

结果我想得到:

Gladiator
Troy

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

1 个答案:

答案 0 :(得分:0)

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