脚本编写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:乍一看令人费解,但使用起来很有趣。