用于解析和运行Javascript网页的Javascript引擎(perl/python)

用于解析和运行Javascript网页的Javascript引擎(perl/python),python,perl,www-mechanize,javascript-engine,Python,Perl,Www Mechanize,Javascript Engine,很久以来,我一直在尝试使用python(2.4)解析和运行javascript网页。不幸的是,我不能使用qt、webkit,因此排除了大多数基于python的无头浏览器。然而,我最近在perl中发现了WWW::Scripter(使用Perl5.8.8),它似乎也是javascript的脚本引擎。我还安装了运行它所需的javascript插件 use WWW::Scripter; $w = new WWW::Scripter; $w->use_plugin('JavaScript'); #

很久以来,我一直在尝试使用python(2.4)解析和运行javascript网页。不幸的是,我不能使用qt、webkit,因此排除了大多数基于python的无头浏览器。然而,我最近在perl中发现了WWW::Scripter(使用Perl5.8.8),它似乎也是javascript的脚本引擎。我还安装了运行它所需的javascript插件

use WWW::Scripter;
$w = new WWW::Scripter;
$w->use_plugin('JavaScript');  # packaged separately
$w->get('some javascript website');
print $w->content;
它会打印出很多错误,最终会终止,输出结果似乎与预期不符。我尝试了3-4个站点,但结果相同。所谓预期输出,我指的是源代码,可以从GoogleChrome浏览器的inspect元素中看到。 你知道我用perl脚本做了什么错事吗?其次,任何让javascript引擎运行的快速替代方法都可以用python2.4或perl(甚至ruby,约束是不能使用qt)解析网站 希望我能提出我的问题,而不会造成很多混乱

编辑: 前几行错误:

Day too big - 52263 > 24855
Sec too small - 52263 < 74752
Sec too big - 52263 > 11647
Day too big - 52263 > 24855
Sec too small - 52263 < 74752
Sec too big - 52263 > 11647
<></> at /usr/lib/perl5/site_perl/5.8.8/HTML/DOM/Element.pm line 320.
 at /usr/lib/perl5/site_perl/5.8.8/HTML/DOM/Element.pm line 320.
        HTML::DOM::Element::getAttribute('HTML::DOM::Element::Input=HASH(0xcc309f0)', 'checked') called at /usr/lib/perl5/site_perl/5.8.8/HTML/DOM/Element.pm line 379
        HTML::DOM::Element::_attr('HTML::DOM::Element::Input=HASH(0xcc309f0)', 'checked') called at /usr/lib/perl5/site_perl/5.8.8/HTML/DOM/Element/Form.pm line 965
        HTML::DOM::Element::Input::defaultChecked('HTML::DOM::Element::Input=HASH(0xcc309f0)') called at /usr/lib/perl5/site_perl/5.8.8/HTML/DOM/Element/Form.pm line 975
        HTML::DOM::Element::Input::checked('HTML::DOM::Element::Input=HASH(0xcc309f0)') called at /usr/lib/perl5/site_perl/5.8.8/JE.pm line 1719
        JE::__ANON__('JE::Object::Proxy=REF(0xcb53f44)', undef) called at /usr/lib/perl5/site_perl/5.8.8/JE/Object.pm line 385
        JE::Object::prop('JE::Object::Proxy=REF(0xcb53f44)', 'checked') called at /usr/lib/perl5/site_perl/5.8.8/JE/LValue.pm line 91
        JE::LValue::get('JE::LValue=ARRAY(0xcc4eac8)') called at /usr/lib/perl5/site_perl/5.8.8/JE/Code.pm line 1197
        JE::Code::Expression::eval('JE::Code::Expression=ARRAY(0xc5fa87c)') called at /usr/lib/perl5/site_perl/5.8.8/JE/Code.pm line 1377
        JE::Code::Expression::_eval_term('JE::Code::Expression=ARRAY(0xc5fa87c)') called at /usr/lib/perl5/site_perl/5.8.8/JE/Code.pm line 1150
        JE::Code::Expression::eval('JE::Code::Expression=ARRAY(0xc5fa78c)') called at /usr/lib/perl5/site_perl/5.8.8/JE/Code.pm line 349
        JE::Code::Statement::eval('JE::Code::Statement=ARRAY(0xc5e50e8)') called at /usr/lib/perl5/site_perl/5.8.8/JE/Code.pm line 186
        eval {...} called at /usr/lib/perl5/site_perl/5.8.8/JE/Code.pm line 157
        JE::Code::execute('JE::Code=HASH(0xcb4a5c0)', 'WWW::Scripter::Plugin::JavaScript::JE=REF(0xa7c76e8)', 'JE::Scope=ARRAY(0xcb4fc7c)', 2) called at /usr/lib/perl5/site_perl/5.8.8/JE/Object/Function.pm line 486
        JE::Object::Function::apply('JE::Object::Function=REF(0xcb4aaac)', 'WWW::Scripter::Plugin::JavaScript::JE=REF(0xa7c76e8)') called at /usr/lib/perl5/site_perl/5.8.8/JE/Object/Function.pm line 351
        JE::Object::Function::call('JE::Object::Function=REF(0xcb4aaac)') called at /usr/lib/perl5/site_perl/5.8.8/JE/Code.pm line 1287
        JE::Code::Expression::eval('JE::Code::Expression=ARRAY(0xc607808)') called at /usr/lib/perl5/site_perl/5.8.8/JE/Code.pm line 1377
        JE::Code::Expression::_eval_term('JE::Code::Expression=ARRAY(0xc607808)') called at /usr/lib/perl5/site_perl/5.8.8/JE/Code.pm line 1182
        JE::Code::Expression::eval('JE::Code::Expression=ARRAY(0xc5a0798)') called at /usr/lib/perl5/site_perl/5.8.8/JE/Code.pm line 1377
        JE::Code::Expression::_eval_term('JE::Code::Expression=ARRAY(0xc5a0798)') called at /usr/lib/perl5/site_perl/5.8.8/JE/Code.pm line 1150
        JE::Code::Expression::eval('JE::Code::Expression=ARRAY(0xc5a0600)') called at /usr/lib/perl5/site_perl/5.8.8/JE/Code.pm line 349
        JE::Code::Statement::eval('JE::Code::Statement=ARRAY(0xc3abbc0)') called at /usr/lib/perl5/site_perl/5.8.8/JE/Code.pm line 186
        eval {...} called at /usr/lib/perl5/site_perl/5.8.8/JE/Code.pm line 157
天太大-52263>24855
秒太小-52263<74752
秒太大-52263>11647
天太大-52263>24855
秒太小-52263<74752
秒太大-52263>11647
在/usr/lib/perl5/site_perl/5.8.8/HTML/DOM/Element.pm第320行。
在/usr/lib/perl5/site_perl/5.8.8/HTML/DOM/Element.pm第320行。
在/usr/lib/perl5/site_perl/5.8.8/HTML/DOM/Element.pm第379行调用HTML::DOM::Element::getAttribute('HTML::DOM::Element::Input=HASH(0xcc309f0)','checked')
HTML::DOM::Element::_attr('HTML::DOM::Element::Input=HASH(0xcc309f0)','checked')在/usr/lib/perl5/site_perl/5.8.8/HTML/DOM/Element/Form.pm第965行调用
HTML::DOM::Element::Input::defaultChecked('HTML::DOM::Element::Input=HASH(0xcc309f0)')在/usr/lib/perl5/site_perl/5.8.8/HTML/DOM/Element/Form.pm第975行调用
在/usr/lib/perl5/site\u perl/5.8.8/JE.pm第1719行调用HTML::DOM::Element::Input::checked('HTML::DOM::Element::Input=HASH(0xcc309f0)'
JE::_uuanon_uuu('JE::Object::Proxy=REF(0xcb53f44),未定义)在/usr/lib/perl5/site_perl/5.8.8/JE/Object.pm第385行调用
JE::Object::prop('JE::Object::Proxy=REF(0xcb53f44)','checked')在/usr/lib/perl5/site_perl/5.8.8/JE/LValue.pm第91行调用
在/usr/lib/perl5/site_perl/5.8.8/JE/Code.pm第1197行调用JE::LValue::get('JE::LValue=ARRAY(0xcc4eac8)'
在/usr/lib/perl5/site_perl/5.8.8/JE/Code.pm第1377行调用JE::Code::Expression::eval('JE::Code::Expression=ARRAY(0xc5fa87c)')
JE::Code::Expression::_eval_term('JE::Code::Expression=ARRAY(0xc5fa87c)’在/usr/lib/perl5/site_perl/5.8.8/JE/Code.pm第1150行调用
在/usr/lib/perl5/site_perl/5.8.8/JE/Code.pm第349行调用JE::Code::Expression::eval('JE::Code::Expression=ARRAY(0xc5fa78c)')
在/usr/lib/perl5/site_perl/5.8.8/JE/Code.pm第186行调用JE::Code::Statement::eval('JE::Code::Statement=ARRAY(0xc5e50e8')
eval{…}在/usr/lib/perl5/site_perl/5.8.8/JE/Code.pm第157行调用
JE::Code::execute('JE::Code=HASH(0xcb4a5c0)','WWW::Scripter::Plugin::JavaScript::JE=REF(0xa7c76e8)','JE::Scope=ARRAY(0xcb4fc7c)'2)在/usr/lib/perl5/site_perl/5.8.8/JE/Object/Function.pm第486行调用
JE::Object::Function::apply('JE::Object::Function=REF(0xcb4aaac)','WWW::Scripter::Plugin::JavaScript::JE=REF(0xa7c76e8)')调用于/usr/lib/perl5/site_perl/5.8.8/JE/Object/Function.pm第351行
JE::Object::Function::call('JE::Object::Function=REF(0xcb4aaac)’)在/usr/lib/perl5/site_perl/5.8.8/JE/Code.pm第1287行调用
在/usr/lib/perl5/site_perl/5.8.8/JE/Code.pm第1377行调用JE::Code::Expression::eval('JE::Code::Expression=ARRAY(0xc607808)')
JE::Code::Expression::_eval_term('JE::Code::Expression=ARRAY(0xc607808)'),在/usr/lib/perl5/site_perl/5.8.8/JE/Code.pm第1182行调用
在/usr/lib/perl5/site_perl/5.8.8/JE/Code.pm第1377行调用JE::Code::Expression::eval('JE::Code::Expression=ARRAY(0xc5a0798)')
JE::Code::Expression::_eval_term('JE::Code::Expression=ARRAY(0xc5a0798)')在/usr/lib/perl5/site_perl/5.8.8/JE/Code.pm第1150行调用
在/usr/lib/perl5/site_perl/5.8.8/JE/Code.pm第349行调用JE::Code::Expression::eval('JE::Code::Expression=ARRAY(0xc5a0600)'
在/usr/lib/perl5/site_perl/5.8.8/JE/Code.pm第186行调用JE::Code::Statement::eval('JE::Code::Statement=ARRAY(0xc3abbc0)')
eval{…}在/usr/lib/perl5/site_perl/5.8.8/JE/Code.pm第157行调用

感谢您,以防有任何用处:是一个单文件无头webkit(无需安装)。我多次使用它(只需将exe放在perl旁边),并使其正常工作。下一版本(1.9)(3月/4月?)预计将处理标准DIN以简化管道


中,通过临时文件在Perl和PhantomJs之间进行交互的代码示例会出现哪些错误?你到底为什么要使用Perl5.8,它已经有十多年的历史了?谢谢你的回复。我在一台服务器上工作,因此升级需要很多请求:(虽然我已经启动了请求,但在此之前我需要对我所拥有的感到满意。当我在路透社网站上运行它时,我正在粘贴前几行错误。)。