三重工作:我必须完成一项与树任务有关的工作。我们有三个任务:
- 获取页面
- 解析 HTML
- 存储数据...是的 - 这是一个真正的 Perl 工作!
我必须对瑞士网站的所有 6000 个子页面进行解析器工作。(一个政府网站 - 有非常好的服务器)。
请参阅 http://www.educa.ch/dyn/79362.asp?action=search和
(如果您没有看到大约 6000 个结果- 然后使用.
详细的页面是这样的:
[链接文字][1]
- Ecole nouvelle de la Suisse Romande Ch. de Rovéréaz 20 Case postal 161 1000 Lausanne 12 网址 info@ensr.ch 电话: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: schorderet@inbox.lv">schorderet@inbox.lv</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 获取。这个论坛中有很多使用该模块发布数据并获取结果页面的示例。顺便说一句,如果我们愿意,我们可以使用机械化。
第二:解析页面,例如使用 HTML::TokeParser 或其他一些模块来获取我们需要的数据。
第三:将数据直接存储到数据库中。无需采取中间步骤并编写临时文件。
嗯 - 第一个和第二个问题 - 如何获取以及如何解析。