Найти - Пользователи
Полная версия: Чистка HTML от контента с помощью lxml (или без нее)
Начало » Data Mining » Чистка HTML от контента с помощью lxml (или без нее)
1
valentjedi
Всем привет, есть такая задачка:
с помощью 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, то тоже прошу в студию.
py.user.next
>>> 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>'
>>>
valentjedi
py.user.next
Круто, спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB