Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 17, 2020 19:55:37

lomach
От:
Зарегистрирован: 2012-01-28
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг HTML таблицы

Здравствуйте!

Необходимо спарсить содержимое 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




Django 1.8, БД MySQL 6
Debian Linux 7.0

Офлайн

#2 Апрель 18, 2020 00:45:21

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10026
Репутация: +  857  -
Профиль   Отправить e-mail  

Парсинг HTML таблицы

lomach
Проблема как раз в том, что есть тэги <span> и <font> внутри <td>. Эти тэги иногда отсутствуют.
Приготовь страницу к парсингу. Пройди её первый раз и очисти всё ненужное. Во второй раз уже можешь парсить.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version