Уведомления

Группа в Telegram: @pythonsu

#1 Март 6, 2014 11:05:22

valentjedi
Зарегистрирован: 2014-03-06
Сообщения: 26
Репутация: +  3  -
Профиль   Отправить e-mail  

Чистка HTML от контента с помощью lxml (или без нее)

Всем привет, есть такая задачка:
с помощью etree.HTML(page) получаю контейнер, в котором содержится дерево страницы page и все ее содержимое. Можно ли с помощью lxml, ну, Cleaner там или еще что, удалить весь текстовый контент странички и оставить только дерево.
Например, так:
Было:

<html>
	<head>
		<title>Менеджер таблиц</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<link rel="stylesheet" type="text/css" href="css/table.css" />
		<script type="text/javascript" src="js/table.js"></script>
	</head>
	<body>
		<div id="create_table">
			<p><b>Создание таблицы:</b></p>
			<!-- Создание таблицы -->
			<form name="createTable">
				<p>Имя таблицы:</p>
				<input type="text" name="tableName" value=""/>
				<table class="tableCreation">
				
				<thead>
					<tr>
						<td>PK</td>
						<td>Имя поля</td>
						<td>Тип поля</td>
						<td>Уникальное</td>
						<td>Не пустое</td>
						<td>Добавить</td>
						<td>Удалить</td>
					</tr>
				</thead>
.....
Стало:
<html>
	<head>
		<title></title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<link rel="stylesheet" type="text/css" href="css/table.css" />
		<script type="text/javascript" src="js/table.js"></script>
	</head>
	<body>
		<div id="create_table">
			<p><b></b></p>
			<form name="createTable">
				<p></p>
				<input type="text" name="tableName" value=""/>
				<table class="tableCreation">
				
				<thead>
					<tr>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
					</tr>
				</thead>
......

То есть, атрибуты тегов можно оставить, а все остальное убрать.
P.S. Если кто знает, как это сделать не с lxml, то тоже прошу в студию.



#!/usr/bin/env python
# -*- coding: utf-8 -*-

Отредактировано valentjedi (Март 6, 2014 11:07:14)

Офлайн

#2 Март 7, 2014 01:34:18

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

Чистка HTML от контента с помощью lxml (или без нее)

>>> import lxml.html
>>> 
>>> html = lxml.html.fromstring('<b>text1<i>text2</i>text3<i>text4</i>text5</b>')
>>> 
>>> for i in html.iter():
...     i.text = i.tail = None
... 
>>> out = lxml.html.tostring(html)
>>> print(out)
b'<b><i></i><i></i></b>'
>>>



Офлайн

#3 Март 7, 2014 03:15:18

valentjedi
Зарегистрирован: 2014-03-06
Сообщения: 26
Репутация: +  3  -
Профиль   Отправить e-mail  

Чистка HTML от контента с помощью lxml (или без нее)

py.user.next
Круто, спасибо.



#!/usr/bin/env python
# -*- coding: utf-8 -*-

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version