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”的 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 回答