2012-02-24 112 views
0

我試圖處理一些名爲xls的文件,並且可以在Excel中打開它們但是它們是web檔案文件有一些嵌套表,我想首先與非嵌套表一起工作。我認爲我可以通過只查找那些父元素具有body標籤但沒有我的表的表是table.get_parent()。tag =='body'true的表來捕獲非嵌套表。即使對於特定表的父元素的標籤下表剪斷是div標籤當使用LXML爲什麼正文元素不是這個html元素的表格元素的父元素

<html> 
    <head> 
    <META http-equiv=3DContent-Type content=3D'text/html; charset=utf-8'><script type=3Dtext/javascript src=3DShow.js>/* Do Not Remove This Comment */</script></head> 
    <body> 
    <table class=3Dreport id=3DID0EI> 
     <tr> 
     <th> 

我檢查和身體標記被關閉爲是表標記。

table.getparent() 

回報

 <Element div at 9f05f10> 

筆記,我通過閱讀文檔作爲字符串和以下一般步驟

myTree=html.fromstring(someString) 
tables=myTree.cssselect('table') 


tables=theTree.cssselect('table') 
+0

選擇由CSS可能會返回另一個在其他地方的div中的表? – 2012-02-24 20:52:08

回答

1

XPath來救援

tree = html.fromstring(someString) 
table_tops = set(tree.xpath('//table'))-set(tree.xpath('//table//table')) 
讓我的表

Ther e是可能是一些奇特的XPath(有些SO智者將發佈)做,但這個應該是超快速(易讀)

更新 CSS版本相同的想法

myTree=html.fromstring(someString) 
table_tops = set(myTree.cssselect('table'))-set(myTree.cssselect('table table')) 
+0

這是光滑的。我從來沒有理解xpath,但我從這個例子中學到了很多,我假設// table是獲取文檔樹根部所有表的命令? – PyNEwbie 2012-02-24 22:25:12

+0

'''樹'是任何地方的任何樹。 '// //在當前節點處或下方。 – 2012-02-24 22:33:01