如何使用Perl获取和解析HTML?

时间:2010-05-21 22:45:06

标签: html perl curl

如何按顺序在Perl中执行以下操作: a)卷曲页面并将其保存到变量中 b)为我想要的值解析变量的值(即HTML内容)(例如:信息保存在标签之间,如...)

1 个答案:

答案 0 :(得分:2)

我的perl kung-fu生锈了,但我相信这是下面的事情。

使用curl获取内容然后提取一些html元素的内容:

use WWW::Curl::Easy;
my $curl = new WWW::Curl::Easy;
$curl->setopt(CURLOPT_URL, 'http://www.example.com/some-url.html');
open (my $fileb, ">", \$response_body);
$curl->setopt(CURLOPT_WRITEDATA, $fileb);
$curl->perform;
my $info = $curl->getinfo(CURLINFO_HTTP_CODE);

$response_body =~ m|<a[^>]+>(.+?)</a>|;

现在,$ 1应该包含A元素的内容。如果没有,则会说$ 1未定义或类似。当然,您应首先检查$ info状态代码是否符合预期。这是Perl代码,这种方式很难看,但它有效。但是,我建议不要经常这样做(特别是不要在更大的脚本中),因为使用Perl确实是shooting yourself in the foot的最快之路:

你在脚下射击自己,但没有人能理解你是怎么做到的。六个月后,你们也不能。

我希望它有所帮助。

P.S。我确信有一些更简单的方法,没有这么多代码,但我不记得它是怎么回事......