更有效地编写HTTP脚本

时间:2010-01-11 16:15:08

标签: python ruby perl http scripting

我经常想要自动化http查询。我目前使用Java(和commons http客户端),但可能更喜欢基于脚本的方法。一些非常快速和简单的东西。在哪里我可以设置标题,转到页面而不用担心设置整个OO生命周期,设置每个标题,调用html解析器...我正在寻找任何语言的解决方案,更喜欢脚本

12 个答案:

答案 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是一个不错的选择。

在另一个答案中链接的机械化是“库中的浏览器”,perlRubyPython中有克隆。 Perl one是原始的,如果你想要一个浏览器,这似乎是要走的路。这种方法的问题是所有前端代码(可能依赖于JavaScript)都不会被执行。

答案 3 :(得分:6)

轮到我了:wget或perl lwp。您可以在链接页面上找到示例。

答案 4 :(得分:6)

如果您有简单的需求(获取页面然后解析它),则很难超越LWP::SimpleHTML::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​​ 库:

  • httparty:非常有趣,哲学很有趣。
  • mechanize:经典的优质网络自动化库。
  • scrubYt:乍一看令人费解,但使用起来很有趣。