Необходимо спарсить содержимое html таблицы:
<thead> <tr> <th class="text-center" width="1%"> <span style=""> </span> </th> <th class="text-center" width="15%"> <span style="font-family:'Universal White',Serif;font-size :22px;"> 忒 </span> </th> <th class="text-center" width="15%"> <span style="font-family:'Rom',Serif;font-size :20px;"> 写 </span> </th> <th class="text-center" width="15%"> <span style="font-family:,Serif;font-size :20px;"> 文 </span> </th> <th class="text-center" width="4%"> <span style="font-family:'Goth12',Serif;font-size :20px;"> </span> </th> <th class="text-center" width="5%"> <span style="font-family:'Serif;font-size :20px;"> </span> </th> </tr> </thead> <tbody> <tr> <td bgcolor="#a969c5"> <span style=""> </span> </td> <td> <span style="font-family:'Universal White',Serif;font-size :22px;"> <font color="red">123</font> </span> </td> <td> <span style="font-family:Serif;font-size :20px;"> wtf </span> </td> <td> <span style="font-family:Serif;font-size :20px;"> sometext </span> </td> <td> <span style="font-family:'Universal White','Goth12',Serif;font-size :20px;"> </span> </td> <td> <span style="font-family:'Rom',Serif; font-size :20px;"> <a href="javascript:void(0)" onclick="loadDicImage(61,'101');">a</a> </span> </td> </tr> </tbody>
Для парсинга решил использовать библиотеку lxml.
Вот мой код.
from lxml import html, etree def get_html(file_name, tag): tree = html.fromstring(file_name) nodes = tree.xpath(tag) for i in nodes: print(i.text) if __name__ == '__main__': n = get_html(table, '//body/*')
Затруднение в следующем:
1. Согласно документации, есть опция использования Mixed Content и фишечка tail. (Собственно поэтому и использую эту библиотеку).
Проблема как раз в том, что есть тэги <span> и <font> внутри <td>. Эти тэги иногда отсутствуют. Это портит результаты парсинга.
Не могу догнать, как мне использовать tail из примера - http://effbot.org/zone/element.htm