perl WWW::Scripter包在用于网页抓取时使用1.2GB内存

5us2dqdw  于 8个月前  发布在  Perl
关注(0)|答案(1)|浏览(50)

我不是超级熟悉这个包摆在首位.我发现,use_plugin('JavaScript')方法消耗大量的内存通过分析器.我交换了这个方法的插件('JavaScript'),虽然内存消耗较低,我不能事件通过登录页面的形式,我应该报废的网站.
全局定义:

my $scripter = WWW::Scripter->new();
$scripter->use_plugin('JavaScript')
if(my $form = $scripter->form_with_fields("Password")){
  $form->value('Password', $conf->{'moxa_p'});
  $form->submit();
}else{
  print "dbg +> form 1.0 not found";
}

尝试使用delete和undef关键字,但它根本没有帮助!

wribegjk

wribegjk1#

减少缓存页面堆栈(WWW::Scripter WWW::Mechanize)

在WWW::Scripter中使用max_docs或在WWW::Machanize中使用stack_depth。WWW::Machanize手册页建议将其设置为5或10。

man WWW::Scripter
max_docs

要保留在历史记录中的文档对象的最大数量(沿着它们对应的请求和响应对象)。如果省略此值,则将使用Mech的stack_depth + 1。此值相差1,因为stack_depth是您可以返回的页数,因此它比记录的页数小1。max_docs认为0等于无穷大。

man WWW::Mechanize

·“堆栈深度=> $值”
设置页面堆栈的深度,以跟踪所有下载的页面。默认情况下,堆栈大小实际上是无限的。如果堆栈正在消耗您的内存,请将此设置为较小的数字,例如5或10。将此设置为零意味着Mech将不保留任何历史记录。

相关问题