San*_*ing 7 ruby perl rubygems
在Perl中有一个LWP模块:
libwww-perl集合是一组Perl模块,它为万维网提供简单而一致的应用程序编程接口(API).该库的主要重点是提供允许您编写WWW客户端的类和函数.该库还包含更常用的模块,甚至包含可帮助您实现简单HTTP服务器的类.
Ruby有类似的模块(gem)吗?
更新
以下是我从特定网站中提取URL的功能示例.
use LWP::UserAgent;
use HTML::TreeBuilder 3;
use HTML::TokeParser;
sub get_gallery_urls {
my $url = shift;
my $ua = LWP::UserAgent->new;
$ua->agent("$0/0.1 " . $ua->agent);
$ua->agent("Mozilla/8.0");
my $req = new HTTP::Request 'GET' => "$url";
$req->header('Accept' => 'text/html');
# send request
$response_u = $ua->request($req);
die "Error: ", $response_u->status_line unless $response_u->is_success;
my $root = HTML::TreeBuilder->new;
$root->parse($response_u->content);
my @gu = $root->find_by_attribute("id", "thumbnails");
my %urls = ();
foreach my $g (@gu) {
my @as = $g->find_by_tag_name('a');
foreach $a (@as) {
my $u = $a->attr("href");
if ($u =~ /^\//) {
$urls{"http://example.com"."$u"} = 1;
}
}
}
return %urls;
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*mas 10
最接近的匹配可能是httpclient,其目的是相当于LWP.但是,根据您的计划,可能会有更好的选择.如果您计划关注链接,填写表单等以便刮取Web内容,则可以使用与perl模块类似的Mechanize.还有更多特定于Ruby的宝石,例如出色的Rest-client和HTTParty(我个人最喜欢的).有关更大的列表,请参阅Ruby Toolbox的HTTP客户端类别.
更新:这是一个如何在Mechanize中找到页面上所有链接的示例(Ruby,但它在Perl中类似):
require 'rubygems'
require 'mechanize'
agent = Mechanize.new
page = agent.get('http://example.com/')
page.links.each do |link|
puts link.text
end
Run Code Online (Sandbox Code Playgroud)
PS作为一个前Perler我自己,我曾经担心放弃优秀的CPAN - 我会把自己画成Ruby的角落吗?难道我无法找到我所依赖的模块的等价物吗?事实证明这根本不是问题,事实上最近恰恰相反:Ruby(以及Python)往往是第一个获得客户支持新平台/ Web服务等的人.
归档时间: |
|
查看次数: |
1475 次 |
最近记录: |