Python lxml.html XPath“;“属性不相等”;操作员未按预期工作
我正在尝试运行以下脚本:Python lxml.html XPath“;“属性不相等”;操作员未按预期工作,python,html,xpath,screen-scraping,lxml,Python,Html,Xpath,Screen Scraping,Lxml,我正在尝试运行以下脚本: #!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%
#!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。相反,它返回一个空列表。为什么呢?我想这是有一些愚蠢的原因,但我试着用谷歌搜索,却找不到任何解释。您的xpath表达式会找到 具有非“naglczas”类的td元素 您似乎想要(因为只有3个td-s有一个类,而您不想要的是同一个类) 没有“naglczas”类的td元素
这些听起来可能相似,但它们是不同的。 差不多
tree.xpath('//td[not(@class="naglczas")]')
你应该得到你想要的
另外,您不需要使用urllib来打开url,lxml可以使用
lxml.html.parse()
查看页面源代码,我看不到这样的元素。td
元素要么将class
设置为“naglczas”
,要么完全没有这样的属性。//td[not(@class=“naglczas”)]是否满足您的需要?是的!非常感谢。还有,Lev Levitsky,这是否意味着我不能申请!=到一个没有这样属性的元素?伙计们,发布一个答案,这样我可以加上你。你没有那么多的工作来回答这个问题,因为它都在评论中,但你作为第一个:D