使用LXML时,为什么body元素不是此html片段中table元素的父元素

时间:2012-02-24 20:43:21

标签: python lxml

我正在尝试处理一些名为xls的文件,可以在Excel中打开,但它们是Web存档文件有一些嵌套表,我想首先使用非嵌套表。我以为我可以通过查看那些父元素有一个body标签的表来捕获非嵌套表,但是我的表中没有一个是table.get_parent()。tag =='body'true。即使对于下面的表剪辑,该特定表的父元素的标记也是div标记

<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')

1 个答案:

答案 0 :(得分:1)

救援的xpath

tree = html.fromstring(someString)
table_tops = set(tree.xpath('//table'))-set(tree.xpath('//table//table'))

可能有一些花哨的xpath(有些SO smarty会发布),但这应该超级快(并且易于阅读)

<强>更新 css版本相同的想法

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