Здравствуйте, дорогой вечер, дорогой - Кодер на Stackoverflow!
наконец-то снова!
В настоящее время я работаю над сценарием синтаксического анализа: мне нужно проанализировать все страницы с подробностями этого сайта здесь: [текст ссылки] [1] Примечание: очень большой и мощный suiss-сайт - правительственный сервер смного силы!Есть несколько способов сделать это.Я должен избавиться от большого количества дерьма, используя только текстовые данные со страницы ... Посмотрите страницу - которая очень очень проста - возьмите эту страницу примера - например.
Altes Schulhaus Ossingen
Guntibachstrasse 10
8475 Ossingen
sekretariat.psossingen@bluewin.ch
Tel:052 317 15 45
Fax:052 317 04 42
Ну, мывидите - мне нужен небольшой PERL-скрипт, чтобы вытащить этот [B] из шести строк [/ B] текста из HTML-страницы.Хорошо - как мы это делаем: Лично мне нравится HTML :: TreeBuilder :: XPath, который мы должны были бы установить из CPAN.Вот как мы могли бы извлечь имя из одного из файлов с ним:
[B] Примечание: [/ B] я не уверен в аргументах, которые мне нужно принять!Смотрите ниже мои испытания:
use strict;
use HTML::TreeBuilder::XPath;
my $tree = HTML::TreeBuilder::XPath->new;
#use real file name here
open(my $fh, "<", "file.html") or die $!;
$tree->parse_file($fh);
my ($name) = $tree->findnodes(qq{/html/body/table/tr[1]/td[2]});
print $name->as_text;
Примечание - вы видите, что у меня есть некоторые проблемы с аргументами.Как мы видим, мы просто используем выражение xpath для идентификации нужного нам узла.[B] Итак, как это определить? [/ B] Хмм - я попытался использовать Firefox-плагин под названием XPather, который позволяет нам просто щелкнуть html-элемент и извлечь соответствующий xpath.Таким образом, мы загружаем файл, который мы хотим проанализировать в Firefox, нажимаем на то, что нам нужно, получаем xpath и используем его в perl-скрипте.Ну, я не очень уверен, что я хорошо справился с XPather.Я устал искать аргументы для следующей страницы: посмотрите на страницу - которая очень очень проста: посмотрите детали страницы результатов - полученной с этого сайта - очень большой и мощный suiss-сайт - правительственный сервер с большой мощностью [см.выше ссылки]
См. ниже [B] мои испытания [/ B]: аргументы, которые я нашел с помощью XPather ... это действительно аргументы, которые помогают мне разобрать вышеупомянутую страницу детализации результатов: [см. выше ссылку]
/html/body/div[3]/text()
/html/body/div[4]/text()
/html/body/div[6]/text()
/html/body/div[7]/text()
/html/body/div[9]/a/text()
/html/body/div[10]/text()
/html/body/div[11]/text()[1]
/html/body/div[11]/text()[2]
/html/body/div[12]/text()[1]
/html/body/div[12]/text()[2]
/html/body/div[13]/text()
[см. выше ссылку]
см. HTML-код
<!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 - http://www.webweaver.de"><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">Altes Schulhaus Ossingen </div><div class="leerzeile"> </div><div><img src="/0.gif" alt="" width="15" height="8">Guntibachstrasse 10</div><div><img src="/0.gif" alt="" width="15" height="8"></div><div><img src="/0.gif" alt="" width="15" height="8">8475 Ossingen</div><div class="leerzeile"> </div><div><img src="/0.gif" alt="" width="15" height="8"><a href="" target="_blank"></a></div><div><img src="/0.gif" alt="" width="15" height="8"><a href="mailto: sekretariat.psossingen@bluewin.ch">sekretariat.psossingen@bluewin.ch</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">052 317 15 45 </div><div><img src="/0.gif" alt="" width="15" height="8">Fax:<img src="/0.gif" alt="" width="4" height="8">052 317 04 42 </div><div> </div></body></html>
Так что я надеюсь, что кто-то захочет просмотреть моймаленький Perl-скрипт и помогает мне найти правильные аргументы для perl-скрипта!
люблю слышать от вас
[B] Кстати [/ B] - другие задачи тожеважный.
- как мне получить страницы: с помощью LWP или Mechanize или чего-то в этом роде??
- Как хранить данные в базе данных MySQL ...!?
привет: cool: