【发布时间】:2010-10-17 08:42:06
【问题描述】:
我需要显示一些存储在网站中的值,因为我需要抓取网站并从表中获取内容。有什么想法吗?
【问题讨论】:
标签: perl screen-scraping
我需要显示一些存储在网站中的值,因为我需要抓取网站并从表中获取内容。有什么想法吗?
【问题讨论】:
标签: perl screen-scraping
对于类似的 Stackoverflow 问题,请查看....
我确实喜欢使用pQuery 来处理此类事情,但Web::Scraper 看起来确实很有趣。
【讨论】:
你也可以使用这个简单的 perl 模块 WEB::Scraper,这很容易理解,让我的生活变得轻松。请按照此示例获取更多信息。
http://teusje.wordpress.com/2010/05/02/web-scraping-with-perl/
【讨论】:
看看这个用 perl 抓取网页的小例子: link text
【讨论】:
看看神奇的Web::Scraper,它是THE网络抓取工具。
【讨论】:
我并不是要拖出一个死线程,但任何通过谷歌搜索此线程的人也应该检查 WWW::Scripter - '用于编写有脚本的网站'
快乐的远程数据聚合 ;)
【讨论】:
如果您熟悉 XPath,也可以使用HTML::TreeBuilder::XPath。如果你不是......那么你应该是;--)
【讨论】:
虽然我通常使用 LWP/LWP::Simple 完成此操作,但当前在 Perl 中用于任何类型网页抓取的“首选”模块是 WWW::Mechanize。
【讨论】:
我使用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.
}
【讨论】:
我过去使用过HTML Table Extract。 我个人觉得使用起来有点笨拙,但可能我没有很好地理解对象模型。 我通常使用手册的这一部分来检查数据:
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";
}
}`
【讨论】: