При использовании LXML почему элемент body не является родителем элемента таблицы в этом фрагменте HTML - PullRequest
0 голосов
/ 25 февраля 2012

Я пытаюсь обработать некоторые файлы, которые называются xls и могут быть открыты в Excel, но это файлы веб-архива. Есть несколько вложенных таблиц, сначала я хочу работать только с не вложенными таблицами.Я думал, что смогу поймать не вложенные таблицы, ища только те таблицы, родительский элемент которых имеет тег 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>

Я проверил, и тег body закрывается, как и тег таблицы.

table.getparent()

возвращает

     <Element div at 9f05f10>

обратите внимание, я получаю свои таблицы, читая в документе в виде строки и следуя этим общим шагам

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


tables=theTree.cssselect('table')

1 Ответ

1 голос
/ 25 февраля 2012

путь к спасению

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

Вероятно, есть какой-то причудливый xpath (который публикуют некоторые настолько умные), но он должен быть очень быстрым (и легко читаемым)

Обновление версия css та же идея

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