gpt4 book ai didi

perl - 用Perl填充div表单

转载 作者:行者123 更新时间:2023-12-03 05:41:58 25 4
gpt4 key购买 nike

我试图通过用youtube链接填写youtube下载网站表单,提交并接受要下载的文件来用perl制作youtube下载脚本。

我尝试了许多不同的代码,但无法填写表格,我认为是因为表格位于

标记中。

我怎样才能做到这一点 ?

谢谢。
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use WWW::Mechanize;

my $url = 'http://www.youtube-mp3.org';
my $m = WWW::Mechanize->new();
my $textbox = 'youtube-url';
my $youtubelink = "http\:\/\/www.youtube.com\/watch\?v\=lDK9QqIzhwk";
my $cgi = CGI->new();
my $form = $cgi->Vars;


$m->get($url);


$m -> form_number ('1');
$m -> field($youtubelink, $form->{$textbox});
$m -> submit();


$m->submit();


print $m -> content();

$m->follow_link(text_regex => qr/Download/i);
my $response = $m->res();
my $filename = $response->filename;

if (! open ( FOUT, ">$filename" ) ) {
die("Could not create file: $!" );
}
print( FOUT $m->response->content() );
close( FOUT );

最佳答案

在行中

$m -> field($youtubelink, $form->{$textbox});

您正在传递与第一个输入的value属性相对应的值,但是field方法不需要 ,而是 名称。 (除了输入没有 名称属性)

我也认为您不能只填写表格中的字段然后提交。如果您看到源代码,它将在提交表单之前运行一些javascript代码

当我们单击“提交”按钮时,可以看到网络上发生了什么,它显示了两个GET方法的序列

首先是这个
http://www.youtube-mp3.org/a/pushItem/?item=http%3A//www.youtube.com/watch%3Fv%3DKMU0tzLwhbE&el=na&bf=false&r=1377433712868 

返回
KMU0tzLwhbE

然后再次调用(注意video_id是第一个GET返回的值)
http://www.youtube-mp3.org/a/itemInfo/?video_id=KMU0tzLwhbE&ac=www&t=grp&r=1377433713366

哪个返回
info = { "title" : "Developers", "image" : "http://i.ytimg.com/vi/KMU0tzLwhbE/default.jpg", "length" : "3", "status" : "serving",  "progress_speed" : "",  "progress" : "",  "ads" : "",  "pf" : "",  "h" : "c21be9b00d0ec12ea980bf828d09440c"  };

因此,我的建议是准备第一个URL,将其发布,提取答案,然后发布包含第一个请求的答案的第二个URL。

关于perl - 用Perl填充div表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18428338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com