所以这让我发疯了.基本上,当我硬编码我的用户名和密码时,我可以登录没问题.但我想提示用户输入用户名和密码,因为我想与他人分享这个程序.(该程序应该登录我们的课程网站并下载我们的所有课程工作信息 - 讲座,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) 有点没经验的程序员在这里尝试编写程序登录我的课程网站并下载所有内容(讲座家庭作业等).显然它是一个受密码保护的网站,所以我必须给它.我理解LWP :: UserAgent和类似的东西,我需要使用凭据.我无法弄清楚的是如何进入下一页.我可以进入登录,但perl如何获得登录结果?
代码示例(我明显地提取了日志信息):
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $url = 'login URL';
$ua -> credentials(
$url,
'',
'user',
'pass'
);
my $response = $ua ->get($url);
print $response->content;
Run Code Online (Sandbox Code Playgroud)
来自响应的内容与我所获得的内容相同,就像我没有通过任何凭据一样.显然我在这里遗漏了一些东西....
哦,据我所知,我自己的课程网站没有一个独特的网址.
我是Perl的新手并尝试编写文本文件.我可以将文本文件写入现有目录没问题,但最终我希望能够创建自己的目录.
我将从我的课程作品网站下载文件,我想将文件放在以课程命名的文件夹中.我不想事先手动为每个课程创建一个文件夹,我也希望最终与其他人共享该脚本,所以我需要一种方法来创建目录并根据HTML中的课程名称命名它们.
到目前为止,我已经能够使这个工作:
use strict;
my $content = "Hello world";
open MYFILE, ">C:/PerlFiles/test.txt";
print MYFILE $content;
close (MYFILE);
Run Code Online (Sandbox Code Playgroud)
test.txt不存在,但是C:/PerlFiles/并且假定打字>允许我创建文件,很棒.
但是,以下内容不起作用:
use strict;
my $content = "area = pi*r^2";
open MYFILE, ">C:/PerlFiles/math_class/circle.txt";
print MYFILE $content;
close (MYFILE);
Run Code Online (Sandbox Code Playgroud)
该目录C:/PerlFiles/math_class/不存在.
我也试过,sysopen但是在添加标志时出现错误:
use strict;
my $content = "area = pi*r^2";
sysopen (MYFILE, ">C:/PerlFiles/math_class/circle.txt", O_CREAT);
print MYFILE $content;
close (MYFILE);
Run Code Online (Sandbox Code Playgroud)
我从Perl Cookbook第7.1章得到了这个想法.打开文件.它不起作用,我收到错误消息Bareword "O_CREAT" not allowed while "strict subs" …