我需要解析以下结构的html表:
Smth1 |
---|
...
Smth2...
Smth3...
Smth4...
Python代码:r = requests.post(url,data)
html = lxml.html.document_fromstring(r.text)
rows = html.xpath(xpath1)[0].findall("tr")
#Getting Xpath with FireBug
data = list()
for row in rows:
data.append([c.text for c in row.getchildren()])
但我在第三行看到:IndexError: list index out of range
任务是从这里形成python dict。行数可能不同。
升级版。
更改了获取html代码的方式,以避免请求库可能出现的问题。现在它是一个简单的url:html = lxml.html.parse(test_url)
这证明了html的所有功能都是正常的:lxml.html.open_in_browser(html)
但同样的问题是:rows = html.xpath(xpath1)[0].findall('tr')
data = list()
for row in rows:
data.append([c.text for c in row.getchildren()])
下面是xpath1:'/html/body/table/tbody/tr[5]/td/table/tbody/tr/td[2]/table/tbody/tr/td/center/table'
UPD2.实验发现,xpath崩溃于:xpath1 = '/html/body/table/tbody'
print html.xpath(xpath1)
#print returns []
如果xpath1较短,则它看起来工作良好,并返回[]for xpath1 = '/html/body/table'