当我使用lxml获取网站中的信息时,为什么程序返回一个空列表

时间:2015-07-03 13:39:29

标签: python xpath web-crawler lxml

我想得到专栏" Menber的名字"在网站http://164.100.47.132/LssNew/Members/Alphabaticallist.aspx中,我希望程序返回的是一个" Adhalrao Patil,Shri Shivaji ..."的列表,但我得到一个空列表。 Xpath在Firepath中得到验证,所以我不知道出了什么问题。 这是我的代码:

import urllib
from lxml import etree

result =   urllib.urlopen("http://164.100.47.132/LssNew/Members/Alphabaticallist.aspx")
html = result.read()

parser = etree.HTMLParser()
tree   = etree.parse(StringIO.StringIO(html), parser)
print type(tree)
xpath = ".//* [@id='ctl00_ContPlaceHolderMain_Alphabaticallist1_dg1']/tbody/tr[position()>1]/td[position()=3]/a/text()"
filtered_html = tree.xpath(xpath)

print filtered_html

然后它返回:

[]

但是,当我使用另一个xpath时:

.//*[@id='ctl00_ContPlaceHolderMain_Alphabaticallist1_dg1_ctl02_Hyperlink2']

我可以获得第一列的值:

[Adhalrao Patil,Shri Shivaji]        

两个xpath都在firepath中验证,为什么前者无法工作?

1 个答案:

答案 0 :(得分:2)

我想某些标签(例如<tbody>)已从html读取的lxml代码中滤除,因此请尝试不使用它,例如:

xpath = ".//* [@id='ctl00_ContPlaceHolderMain_Alphabaticallist1_dg1']/tr[position()>1]/td[position()=3]/a/text()"