我正在搜索Node的模块,它类似于WWW :: Mechanize for Perl.甚至更好的WWW :: Mechanize :: Firefox.
如果有人知道类似的东西,或者我可以搜索哪个方向,那真的很感激.
我正在编写一个Perl脚本来测试我的网页的某些部分,因为我对其进行了更改.使用WWW :: Mechanize类,如何选择一个单选框并提交表单?
至于我可以从WWW :: Mechanize文档中读取,您可以执行以下操作从字符串提交文件:
$mech->submit_form(
fields => {
'UploadedFile' => [[ undef, 'test2.txt', Content => $content ], 1],
}
);
Run Code Online (Sandbox Code Playgroud)
这应该提交一个带有名称的文件text2.txt,其中包含文本$content(在本例中'The file is a lie.').
但是,请求因内部服务器错误而失败,因此我检查了发送的请求,并发现了:
--xYzZY
Content-Disposition: form-data; name="UploadedFile"; filename="ARRAY(0x9567570)"
The file is a lie.
--xYzZY
Run Code Online (Sandbox Code Playgroud)
这显然不是我指定的文件名,所以我想知道:我做错了什么,或模块是否被窃听?
我正在使用WWW :: Mechanize并且当前正在Content-Encoding: gzip我的代码中处理带有' '标头的HTTP响应,首先检查响应头,然后使用IO :: Uncompress :: Gunzip来获取未压缩的内容.
但是我想透明地这样做,以便像form(),links()等WWW :: Mechanize方法处理和解析未压缩的内容.由于WWW :: Mechanize是LWP :: UserAgent的子类,我更愿意使用LWP :: UA ::处理程序来执行此操作.
虽然我已经取得了部分成功(例如我可以打印未压缩的内容),但我无法以我可以调用的方式透明地执行此操作
$mech->forms();
Run Code Online (Sandbox Code Playgroud)
总结:如何"替换"$ mech对象中的内容,以便从那时起,所有WWW :: Mechanize方法的工作方式就好像Content-Encoding从未发生过一样?
我将非常感谢您的关注和帮助.谢谢
我是Perl的新手,我正在学习,同时我尝试自动化一些项目的工作.到目前为止它已经很有趣了.
我正在为客户生成报告.我可以从我可以访问的网页上获取此报告.首先,我需要用我的用户名,密码填写表格,然后从下拉列表中选择一个服务器,然后登录.其次,我需要点击报告部分的链接.第三,需要填写表格来创建报告.
这是我到目前为止写的:
my $mech = WWW::Mechanize->new();
my $url = 'http://X.X.X.X/Console/login/login.aspx';
$mech->get( $url );
$mech->submit_form(
form_number => 1,
fields =>{
'ctl00$ctl00$cphVeriCentre$cphLogin$txtUser' => 'someone',
'ctl00$ctl00$cphVeriCentre$cphLogin$txtPW' => '12345',
'ctl00$ctl00$cphVeriCentre$cphLogin$ddlServers' => 'Live',
button => 'Sign-In'
},
);
die unless ($mech->success);
$mech->dump_forms();
Run Code Online (Sandbox Code Playgroud)
我不明白为什么,但是,在此之后我看看什么转储输出,我看到第一个登录页面的代码,而我相信我应该在我成功登录后到达下一页.
可能有一些cookie可以影响我和登录尝试吗?
还有别的我做错了吗?
Yaniv,感谢您的帮助
我想编写一个脚本来登录Web应用程序,然后转移到应用程序的其他部分:
use HTTP::Request::Common qw(POST);
use LWP::UserAgent;
use Data::Dumper;
$ua = LWP::UserAgent->new(keep_alive=>1);
my $req = POST "http://example.com:5002/index.php",
[ user_name => 'username',
user_password => "password",
module => 'Users',
action => 'Authenticate',
return_module => 'Users',
return_action => 'Login',
];
my $res = $ua->request($req);
print Dumper(\$res);
if ( $res->is_success ) {
print $res->as_string;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试这段代码时,我无法登录该应用程序.返回的HTTP状态代码是302,但没有数据.
如果我发布所有必需的用户名/密码,那么它应该返回应用程序的主页并保持连接实时移动应用程序的其他部分.
我有代码:
#!/usr/bin/perl
use strict;
use WWW::Mechanize;
my $url = 'http://divxsubtitles.net/page_subtitleinformation.php?ID=111292';
my $m = WWW::Mechanize->new(autocheck => 1);
$m->get($url);
$m->form_number(2);
$m->click();
my $response = $m->res();
print $m->response->headers->as_string;
Run Code Online (Sandbox Code Playgroud)
它提交了页面上的下载按钮,但我不确定如何下载POST后发回的文件.
如果可能的话,我想用wget下载这个.我以为他们可能是秘密网址传递的东西?或者我是否必须直接从响应流中下载LWP?
那么如何下载该标题中的文件?
谢谢,
科迪古德曼
我正在使用WWW :: Mechanize来读取每隔几秒运行一次的循环中的特定网页.偶尔,'GET'超时并且脚本停止运行.如何从一个这样的超时恢复,以便它继续循环并在下一次尝试'GET'?
所以这让我发疯了.基本上,当我硬编码我的用户名和密码时,我可以登录没问题.但我想提示用户输入用户名和密码,因为我想与他人分享这个程序.(该程序应该登录我们的课程网站并下载我们的所有课程工作信息 - 讲座,hw等)
此代码有效:
use WWW::Mechanize;
use LWP;
my $username = 'user';
my $password = 'pass';
my $mech = WWW::Mechanize->new();
$mech -> cookie_jar(HTTP::Cookies->new());
$mech -> get('log-in url');
$mech -> form_name('theform');
$mech -> field ('username' => $username);
$mech -> field ('password' => $password);
$mech -> click ('log in');
print $mech-> content();
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试提示用户输入登录信息时,它现在可以正常工作.打印内容返回登录页面的html,而不是以下页面(所述用户的课程页面)
use LWP;
use WWW::Mechanize;
my $login_url = 'log-in url';
print "\nUser name: ";
my $username = <>;
print "Password: ";
my $password = <>;
my $mech = WWW::Mechanize->new();
$mech …Run Code Online (Sandbox Code Playgroud) 我在使用我们的服务提供商登录表单时遇到了一些困难.其他网站工作正常但由于某种原因我无法通过他们的登录表单.
网站登录是这样的:
<form accept-charset="UTF-8" action="/sessions" class="new_user_session" id="new_user_session" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="kaLEkPesQfeheronzGTdfnVAzpuUiC+VmjVXBu540n8=" /></div>
<fieldset class="big">
<div class="form-row">
<div class="form-label">
<label for="user_session_email">Email</label>
</div>
<div class="form-field">
<input id="user_session_email" name="user_session[email]" size="30" type="text" />
</div>
</div>
<div class="form-row">
<div class="form-label">
<label for="user_session_password">Password</label>
</div>
<div class="form-field">
<input id="user_session_password" name="user_session[password]" size="30" type="password" />
</div>
<div class="form-comment"><p><a href="/password_resets/new" class="link-password-recovery">Forgot your password?</a></p></div>
</div>
<div class="form-row optional">
<div class="form-field">
<label for="user_session_remember_me"><input name="user_session[remember_me]" type="hidden" value="0" /><input id="user_session_remember_me" name="user_session[remember_me]" type="checkbox" value="1" /> Remember me for 2 weeks</label> …Run Code Online (Sandbox Code Playgroud) www-mechanize ×10
perl ×8
login ×2
lwp ×2
download ×1
form-submit ×1
javascript ×1
node.js ×1
nokogiri ×1
radio-button ×1