2015-07-03 16 views
1

我想在网站http://164.100.47.132/LssNew/Members/Alphabaticallist.aspx中获得“Menber的名称”一栏,所以我想程序返回的是“Adhalrao Patil, Shri Shivaji ..“,但我得到一个空的列表。 Xpath在Firepath中得到验证,所以我只是不知道什么是错的。 这里是我的代码:当我使用lxml获取网站信息时,为什么程序返回空列表

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验证,为什么前者不能工作?

回答

2

我想这一些标记,如<tbody>是由lxml阅读html代码过滤掉了,所以尝试没有它,如:

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

非常感谢你,你的XPath可以工作。我能问另外一个问题吗?您是否有正确的方法来查看通过lxml过滤的整个html代码? –

+0

@ QM.py:我使用浏览器的“View Page Source”。另外[scrapy shell](http://doc.scrapy.org/en/latest/topics/shell.html) – Birei

相关问题