我正在尝试运行以下脚本:
#!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。相反,它返回一个空列表。这是为什么?我想有一些愚蠢的理由,但我尝试使用谷歌搜索,没有发现任何可以解释它的内容。
答案 0 :(得分:6)
您的xpath表达式将找到
一个td元素,其类不是“naglczas”
你似乎想要(因为一个班级中只有3个td-s有你不想要的同一个班级)
没有“naglczas”类的td元素
这些可能听起来很相似,但它们是不同的。
像
tree.xpath('//td[not(@class="naglczas")]')
应该得到你想要的东西。
此外,您不需要使用urllib打开网址,lxml可以使用lxml.html.parse()
为您执行此操作。