我在拉一个网页,里面有球员的数据。这一页是几页中的第1页。还有一个下拉列表,允许一次查看30多个玩家,允许500个,这样我就可以在一个页面上看到所有玩家。我不知道如何用所有500名玩家来拉页面,所以我拉主页,然后有一个页面大小为500的表单可以发布。问题是表单没有名字,只有id。当我试图用“id=form1”发布表单时,它会说它不存在。我做了一个数据转储程序,下面是帖子。我会使用wget或curl,但它不允许我拉取PageSize=500的文件,因为它只默认为30。另一个问题是get对象和post对象。我需要创建一个饼干罐,还是由代理_别名来处理。
$VAR1 = bless( {
'default_charset' => 'UTF-8',
'enctype' => 'application/x-www-form-urlencoded',
'accept_charset' => 'UNKNOWN',
'action' => bless( do{\(my $o = 'https://www.fangraphs.com/projections.aspx?pos=all&stats=bat&type=steamer&team=0&lg=all&players=0&PageSize=500')}, 'URI::https' ),
'method' => 'POST',
'attr' => {
'id' => 'form1',
'method' => 'post'
},
'inputs' => [
bless( {
'readonly' => 1,
'/' => '/',
'value_name' => '',
'value' => '',
'name' => 'RadScriptManager1_TSM',
'id' => 'RadScriptManager1_TSM',
'type' => 'hidden'
}, 'HTML::Form::TextInput' ),
bless( {
'readonly' => 1,
'/' => '/',
'value_name' => '',
'value' => '/wEPDwUJNTA2ODMzMzI3D2QWBAIBD2QWAgIBDxYCHgRUZXh0BegBPG1ldGEgbmFtZT0nZGVzY3JpcHRpb24nIGNvbnRlbnQ9J1N0ZWFtZXIgYmFzZWJhbGwgcHJvamVjdGlvbnMgZm9yIGJhdHRlcnMgYW5kIHRoZSAyMDIwIHNlYXNvbicgLz4NCjxtZXRhIG5hbWU9J2tleXdvcmRzJyBjb250ZW50PSdiYXNlYmFsbCBwcm9qZWN0aW9ucywgYmF0dGVyIHByb2plY3Rpb25zLCBzdGVhbWVyI
这里还列出了其他一些输入,但不确定我是否需要这些输入。如果需要的话,我可以把整件事发出去。下面是我正在运行的一小段代码。
my $mech = WWW::Mechanize->new();
$mech->agent_alias('Linux Mozilla');
my $url = "https://www.fangraphs.com/projections.aspx?pos=all&stats=bat&type=steamer&team=0&lg=all&players=0&PageSize=500";
$mech->get($url);
$mech->submit_form(
id => 'form1',
);