7

我需要显示一些存储在网站中的值,因为我需要抓取网站并从表中获取内容。有任何想法吗?

4

10 回答 10

6

如果您熟悉 jQuery,您可能想查看pQuery,这很容易:

## print every <h2> tag in page
use pQuery;

pQuery("http://google.com/search?q=pquery")
    ->find("h2")
    ->each(sub {
        my $i = shift;
        print $i + 1, ") ", pQuery($_)->text, "\n";
    });

还有HTML::DOM

但是,无论您做什么,都不要为此使用正则表达式。

于 2009-04-03T13:13:06.143 回答
4

我过去使用过HTML 表格提取。我个人觉得使用起来有点笨拙,但可能我没有很好地理解对象模型。我通常使用手册的这一部分来检查数据:

 use HTML::TableExtract;
 $te = HTML::TableExtract->new();
 $te->parse($html_string);

     # Examine all matching tables
     foreach $ts ($te->tables) {
       print "Table (", join(',', $ts->coords), "):\n";
       foreach $row ($ts->rows) {
          print join(',', @$row), "\n";
       }
     }`
于 2009-04-03T13:21:11.133 回答
3

虽然我通常使用LWP / LWP::Simple完成此操作,但当前在 Perl 中用于任何类型网页抓取的“首选”模块是WWW::Mechanize

于 2009-04-03T15:11:48.903 回答
2

你也可以使用这个简单的 perl 模块 WEB::Scraper,这很容易理解并且让我的生活变得轻松。请按照此示例获取更多信息。

http://teusje.wordpress.com/2010/05/02/web-scraping-with-perl/

于 2011-04-05T09:22:12.030 回答
2

如果您熟悉 XPath,还可以使用HTML::TreeBuilder::XPath。如果你不是......那么你应该是;--)

于 2009-04-03T20:34:58.827 回答
2

对于类似的 Stackoverflow 问题,请查看....

我确实喜欢将pQuery用于此类事情,但是Web::Scraper看起来确实很有趣。

于 2009-04-05T13:18:45.007 回答
1

看看神奇的Web::Scraper,它是网页抓取的工具

于 2009-12-10T14:54:24.820 回答
1

我并不是要拖出一个死线程,但是任何在这个线程上搜索的人也应该检查WWW::Scripter - '用于编写有脚本的网站'

快乐的远程数据聚合;)

于 2009-12-10T14:34:15.063 回答
0

看看这个用 perl 抓取网页的小例子: 链接文本

于 2010-05-10T13:18:54.270 回答
0

我使用LWP::UserAgent来满足我的大部分屏幕抓取需求。如果您需要 Cookie 支持,也可以将其与HTTP::Cookies结合使用。

这是一个关于如何获取源代码的简单示例。

use LWP;
use HTTP::Cookies;
my $cookie_jar = HTTP::Cookies->new;
my $browser = LWP::UserAgent->new;
$browser->cookie_jar($cookie_jar);

$resp = $browser->get("https://www.stackoverflow.com");
if($resp->is_success) {
   # Play with your source here
   $source = $resp->content;
   $source =~ s/^.*<table>/<table>/i; # this is just an example 
   print $source;                     # not a solution to your problem.
}
于 2009-04-03T14:47:13.313 回答