2017-08-31 12 views
1

"tracked_by" idから "buzz_off" idまでの映画名を取得したいと考えています。私はすでに "tracked_by" idの後に名前をつけるセレクタを作成しました。しかし、私の意図は、 "buzz_off" idを見つけるまでスクリプトが解析を行うようにすることです。要素は、その中の名前は次のとおりです。CSSセレクタの「until」に類似したものは何ですか?

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 

Btw、私はこのセレクタを使用してスタイルを設定しないで名前を解析したいと思います。

+0

[セレクタではできません。](https://stackoverflow.com/questions/13330757/how-can-i-target-a-specific-group-of-siblings-in-a-flat-hierarchy/13330785#13330785)これには追加コードが必要です。 – BoltClock

答えて

0

thisは、CSSセレクタのリファレンスです。ご覧のとおり、プログラミング言語ではないので、ロジックの形式はありません。 Pythonでwhile notループを使用し、各要素を1つずつ処理するか、リストに追加する必要があります。

+1

あなたの答え、Treeheeありがとう。そうであれば、私はそれに対処するためにPythonから任意のロジックを借りる必要はありません。むしろ、私はxpathのために "//div[./preceding-sibling::h4[1]='Tracked by '// text()"という式を使って簡単に目的を果たすことができます。私はウェブからデータを削っている間に、ほとんどのケースでCSSセレクターを好むので、私はそれが限界であることも学びたいと思っています。ありがとう。 – SIM

関連する問題