HTML :: TreeBuilder :: XPath: определение выражения xpath - PullRequest
1 голос
/ 17 октября 2010

Здравствуйте, дорогой вечер, дорогой - Кодер на 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] - другие задачи тожеважный.

  1. как мне получить страницы: с помощью LWP или Mechanize или чего-то в этом роде??
  2. Как хранить данные в базе данных MySQL ...!?

привет: cool:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...