Тройное задание: мне нужно выполнить задание с деревом. У нас есть три задачи:
- Получить страницы
- Разобрать HTML
- Хранить данные... И да, это настоящая Perl-работа!
Мне нужно выполнить синтаксический анализ всех 6000 подстраниц сайта в suisse. (правительственный сайт с очень хорошими серверами).
см. http://www.educa.ch/dyn/79362.asp?action=search и
(если вы не видите около 6000 результатов, выполните поиск с помощью .
Подробная страница выглядит следующим образом:
[текст ссылки][1]
- Ecole nouvelle de la Suisse Romande Ch. de Roveréaz 20 Case postal 161 1000 Lausanne 12 Веб-сайт [email protected] Тел: 021 654 65 00 Факс: 021 654 65 05
другие подробные страницы показывают это:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta name="generator" content="DigiOnline GmbH - WebWeaver 3.4 CMS - "><title>educa.ch</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><link rel="stylesheet" href="101.htm"><script src="102.htm"></script><script language="JavaScript"><!--
var did='d79376';
var root=new Array('d200','d205','d73137','d1566','d79376','d');
var usefocus = 1;
function check() {
if ((self.focus) && (usefocus)) {
self.focus();
}
}
// --></script></head><body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onload="check();"><table cellspacing="0" cellpadding="0" border="0" width="100%"><tr><td width="15" class="popuphead"><img src="/0.gif" alt="" width="15" height="16"></td><td width="99%" class="popuphead">Adresse - Schulen in der Schweiz</td><td width="20" class="popuphead" valign="middle"><a href="#" title="Print" onclick="window.print(); return false;"><img src="../pics/print16x13.gif" alt="Drucken" width="16" height="13"></a></td><td width="20" class="popuphead" valign="middle"><a href="#" title="close" onclick="window.close(); return false;"><img src="../pics/close21x13.gif" alt="Schliessen" width="21" height="13"></a></td></tr><tr bgcolor="#B2B2B2"><td colspan="4"><img src="/0.gif" alt="" width="1" height="1"></td></tr></table><div class="leerzeile"> </div><div class="leerzeile"><img src="/0.gif" alt="" width="15" height="8">Auseklis - Schule für lettische Sprache und Kultur</div><div class="leerzeile"> </div><div><img src="/0.gif" alt="" width="15" height="8">Mutschellenstrasse 37</div><div><img src="/0.gif" alt="" width="15" height="8"></div><div><img src="/0.gif" alt="" width="15" height="8">8002 Zürich</div><div class="leerzeile"> </div><div><img src="/0.gif" alt="" width="15" height="8"><a href="http://latvia.yourworld.ch" target="_blank">latvia.yourworld.ch</a></div><div><img src="/0.gif" alt="" width="15" height="8"><a href="mailto: [email protected]">[email protected]</a></div><div class="leerzeile"> </div><div><img src="/0.gif" alt="" width="15" height="8">Tel:<img src="/0.gif" alt="" width="6" height="8">+41786488637</div><div><img src="/0.gif" alt="" width="15" height="8">Fax:<img src="/0.gif" alt="" width="4" height="8"></div><div> </div></body></html>
Я хочу выполнить эту работу с помощью ** HTML::TokeParser или HTML::TokeParser** или *HTML::TreeBuilder::LibXML *, но у меня мало опыта работы с HTML::TreeBuilder::LibXML
Какой из них вы бы предпочли для этой работы: Примечание. Я хочу сохранить результаты в MySQL-DB. Лучше всего было бы сохранить его сразу после синтаксического анализа:
поэтому у нас есть три задачи:
- Получить страницы
- Разобрать HTML
- Хранить данные
Первый элемент: используйте LWP::UserAgent для получения. На этом форуме есть много примеров использования этого модуля для публикации данных и получения результирующих страниц. Кстати, мы можем использовать Mechanize, если захотим.
Второй: проанализируйте страницу, например, с помощью HTML::TokeParser или другого модуля, чтобы получить только те данные, которые нам нужны.
Третье: сохраняйте данные сразу в базе данных. Нет необходимости делать промежуточный шаг и писать временный файл.
хммм - первый и второй вопрос - как получить и как разобрать.