脚本编写HTTP更有效

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

看看Selenium 。 如果您需要自定义脚本,它会为C#,Java,Perl,PHP,Python和Ruby生成代码。

Watir听起来接近你想要的,虽然它(如Selenium在另一个答案中链接)实际上打开了一个浏览器来做东西。 你可以在这里看到一些例子。 另一种基于浏览器的记录+回放方法系统是sahi 。

如果您的应用程序使用WSGI ,那么粘贴是一个不错的选择。

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

Mechanize for Python似乎很容易使用: http : //wwwsearch.sourceforge.net/mechanize/

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

如果你有简单的需求(获取页面然后解析它),那么很难击败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; 

我正在测试ReST API,发现ReST客户端非常好。 它是一个GUI程序,但您可以将查询保存和恢复为XML文件(或生成它们),嵌入,编写测试脚本等。 它是基于Java的(这不是临时优势,但你提到它)。

记录会话的减分。 ReST客户端适用于无状态“一次性”。

如果它不适合您的需求,我会选择已经提到的Mechanize(或WWW-Mechanize ,因为它在CPAN上调用)。

根据您正在做的事情,最简单的解决方案看起来是bash + curl。

后者的手册页可在此处获得:

http://curl.haxx.se/docs/manpage.html

您可以发布post,获取,HTTPS,显示标题,使用cookie,基本和摘要HTTP身份validation,隧道通过各种代理,包括NTLM on * nix等。

curl也可以作为C和PHP支持的共享库使用。

HTH

C。

Python urllib可能就是你要找的东西。

或者,powershell在脚本环境中公开完整的.NET http库。

斜纹是非常好的,用于测试。 它可以用作脚本,交互式会话或Python程序。

Perl和WWW :: Mechanize可以使网络抓取等简单易行,包括轻松处理表单(假设您要进入登录页面,填写用户名和密码并提交表单,处理cookie /隐藏会话标识符作为浏览器…)

类似地,从获取的页面中查找或提取链接是微不足道的。

如果您需要解析WWW :: Mechanize无法轻松帮助的结果页面中的内容,请将结果提供给HTML :: TreeBuilder以使解析变得容易。

那么使用PHP + Curl,或者只是使用bash?

一些ruby库:

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