LXML我需要分析以下結構的HTML表格:解析HTML表格可以用Python
<table class="table1" width="620" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr width="620">
<th width="620">Smth1</th>
...
</tr>
<tr bgcolor="ffffff" width="620">
<td width="620">Smth2</td>
...
</tr>
<tr bgcolor="E4E4E4" width="620">
<td width="620">Smth3</td>
...
</tr>
<tr bgcolor="ffffff" width="620">
<td width="620">Smth4</td>
...
</tr>
</tbody>
</table>
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字典。行數可能不同。
UPD。 更改了我得到html代碼的方式,以避免請求lib可能出現的問題。現在,它是一個簡單的網址:
html = lxml.html.parse(test_url)
這證明everyting是確定的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較短,那麼它seeem運作良好,爲xpath1 = '/html/body/table'
專業提示:請包括python錯誤的*完整*追蹤,以減少任何人幫助你的猜測。 –