2

次のスクリプトを実行しようとしています。

#!python

from urllib import urlopen #urllib.request for python3
from lxml import html

url =   'http://mpk.lodz.pl/rozklady/1_11_D2D3/00d2/00d2t001.htm?r=KOZINY'+\
        '%20-%20Srebrzy%F1ska,%20Cmentarna,%20Legion%F3w,%20pl.%20Wolno%B6ci'+\
        ',%20Pomorska,%20Kili%F1skiego,%20Przybyszewskiego%20-%20LODOWA'

raw_html = urlopen(url).read()
tree = html.fromstring(raw_html) #need to .decode('windows-1250') in python3
ret = tree.xpath('//td [@class!="naglczas"]')
print ret
assert(len(ret)==1)

クラスが「naglczas」に設定されていない 1 つの td を選択することを期待しています。代わりに、空のリストが返されます。何故ですか?ばかげた理由があると思いますが、ググってみましたが、それを説明するものは何も見つかりませんでした。

4

1 に答える 1

7

あなたのxpath式は見つけます

「naglczas」ではないクラスを持つ td 要素

あなたは望んでいるようです(クラスを持つ唯一の3つのtd-sには、あなたが望まない同じクラスがあるため)

「naglczas」のクラスを持たない td 要素


これらは似ているように聞こえるかもしれませんが、違います。何かのようなもの

tree.xpath('//td[not(@class="naglczas")]')

あなたが望むものを手に入れるはずです。


また、urllib を使用して URL を開く必要はありません。lxml を使用すると、lxml.html.parse().

于 2012-11-04T15:26:20.413 に答える