我经常想要自动化http查询。我目前使用Java(和commons http客户端),但可能更喜欢基于脚本的方法。一些非常快速和简单的东西。在哪里我可以设置标题,转到页面而不用担心设置整个OO生命周期,设置每个标题,调用html解析器...我正在寻找任何语言的解决方案,更喜欢脚本
答案 0 :(得分:6)
Python的Mechanize似乎很容易使用:http://wwwsearch.sourceforge.net/mechanize/
答案 1 :(得分:6)
看看Selenium。如果您需要自定义脚本,它会为C#,Java,Perl,PHP,Python和Ruby生成代码。
答案 2 :(得分:6)
Watir听起来很接近你想要的东西虽然它(就像Selenium链接到另一个答案)实际上打开了一个浏览器来做东西。您可以看到一些示例here。另一种基于浏览器的记录+回放方法系统是sahi。
如果您的应用程序使用WSGI,则paste是一个不错的选择。
在另一个答案中链接的机械化是“库中的浏览器”,perl,Ruby和Python中有克隆。 Perl one是原始的,如果你不想要一个浏览器,这似乎是要走的路。这种方法的问题是所有前端代码(可能依赖于JavaScript)都不会被执行。
答案 3 :(得分:6)
轮到我了:wget或perl lwp。您可以在链接页面上找到示例。
答案 4 :(得分:6)
如果您有简单的需求(获取页面然后解析它),则很难超越LWP::Simple和HTML::TreeBuilder。
use strict;
use warnings;
use LWP::Simple;
use HTML::TreeBuilder;
my $url = 'http://www.example.com';
my $content = get( $url) or die "Couldn't get $url";
my $t = HTML::TreeBuilder->new_from_content( $content );
$t->eof;
$t->elementify;
# Get first match:
my $thing = $t->look_down( _tag => 'p', id => qr/match_this_regex/ );
print $thing ? $thing->as_text : "No match found\n";
# Get all matches:
my @things = $t->look_down( _tag => 'p', id => qr/match_this_regex/ );
print $_ ? $_->as_text : "No match found" for @things;
答案 5 :(得分:4)
我正在测试ReST API,发现ReST Client非常好。它是一个GUI程序,但您可以将查询保存和恢复为XML文件(或生成它们),嵌入,编写测试脚本等。它是基于Java的(这不是临时优势,但你提到了它。)
记录会话的减分。 ReST客户端适用于无状态“一次性”。
如果它不符合您的需求,我会选择已经提到的Mechanize(或WWW-Mechanize,因为它在CPAN上调用)。
答案 6 :(得分:3)
根据您正在做的事情,最简单的解决方案看起来是bash + curl。
后者的手册页可在此处获取:
http://curl.haxx.se/docs/manpage.html
您可以发布帖子,获取,HTTPS,显示标题,使用Cookie,基本和摘要HTTP身份验证,隧道通过各种代理,包括* nix上的NTLM等。
curl也可以作为C和PHP支持的共享库使用。
HTH
下进行。
答案 7 :(得分:2)
Python urllib可能就是你要找的东西。
或者,PowerShell在脚本环境中公开完整的.NET http库。
答案 8 :(得分:2)
Twill非常好用于测试。它可以用作脚本,交互式会话或Python程序。
答案 9 :(得分:2)
Perl和WWW::Mechanize可以使网页抓取等简单易行,包括轻松处理表单(假设您要进入登录页面,填写用户名和密码并提交表单,处理cookie /隐藏的会话标识符就像浏览器一样......)
同样,从提取的页面中查找或提取链接也很简单。
如果您需要解析WWW :: Mechanize无法轻松帮助的结果页面中的内容,请将结果提供给HTML::TreeBuilder以使解析变得容易。
答案 10 :(得分:0)
如何使用PHP + Curl,或者只是使用bash?
答案 11 :(得分:0)
一些 ruby 库: