Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 使用HTML::TreeBuilder::XPath调试代码时出错_Apache_Perl_Lwp Useragent - Fatal编程技术网

Apache 使用HTML::TreeBuilder::XPath调试代码时出错

Apache 使用HTML::TreeBuilder::XPath调试代码时出错,apache,perl,lwp-useragent,Apache,Perl,Lwp Useragent,我在调试以下代码时遇到一些错误 请注意,它从http://europa.eu/youth/volunteering/evs-organisation#open 解析每个页面后,检查底部是否存在next›链接 “查看源”是基于浏览器的命令。它告诉浏览器以纯文本形式输出响应,而不是根据其实际内容类型(本例中为HTML)呈现响应。您不需要在URL中包含视图源 这里我们有一个脚本,它从每个块中提取数据并稍微清理一下。browse功能是通用的。它采用一个输入引用,其中包含父项和子项的URL和XPath,以

我在调试以下代码时遇到一些错误

请注意,它从
http://europa.eu/youth/volunteering/evs-organisation#open

解析每个页面后,检查底部是否存在
next›
链接

“查看源”是基于浏览器的命令。它告诉浏览器以纯文本形式输出响应,而不是根据其实际内容类型(本例中为HTML)呈现响应。您不需要在URL中包含视图源

这里我们有一个脚本,它从每个块中提取数据并稍微清理一下。
browse
功能是通用的。它采用一个输入引用,其中包含父项和子项的URL和XPath,以便构造输出引用。这只是一种方法:它还没有在每个页面上导航

在我测试的一个粗略脚本中,我使用
//span[@class=“ey_badge”]
获取了全部结果,然后使用

my$page_max=$results/21;
$page\u max=int($page\u max)==$page\u max$最大页数--:int($page\u max);
看到错误了吗

martin@linux-3645:~/dev/perl>perl eu.pl
eu.pl第81行“our”附近的语法错误
全局符号“$iterator\u organizations”要求在eu.pl第81行显示包名。
无法在eu.pl第84行“=@”附近的“我的”中使用全局@@
eu.pl第197行末尾缺少右曲括号或方括号
由于编译错误,eu.pl的执行已中止。
martin@linux-3645:~/dev/perl>^C
martin@linux-3645:~/dev/perl>
它从
http://europa.eu/youth/volunteering/evs-organisation#open

参见代码

使用严格;
使用致命警告=>qw#all#;
使用LWP::UserAgent;
使用HTML::TreeBuilder::XPath;
使用数据::转储程序;
我的$handler\u relurl=sub{q#https://europa.eu# . $_[0] };  
我的$handler\u trim=sub{$\u[0]=~s#^\s*(.+?)\s*$#$1#r};
我的$handler_val=sub{$_[0]=~s#^[^::+:\s*##r};
我的$handler\u split=sub{[split$\u[0],$\u[1]};
my$handler_split_colon=sub{$handler_split->(qr###,$0]);
我的$handler_split_逗号=sub{$handler_split->(qr#,#,$0]);
我的$conf={
url=>q#https://europa.eu/youth/volunteering/evs-organisation_en#,  
parent=>q#//div[@class=“vp ey_block is flex”]#,
儿童=>{
内部_url=>[q#//a/@href#,[$handler_relurl]],
外部url=>[q#//i[@class=“fa fa external link fa lg”]/parent::p//a/@href#,[$handler\u trim]],
title=>[q#//h4#],
topics=>[q#//div[@class=“org_cord”]#,[$handler\u val,$handler\u split\u colon]],
位置=>[q#//i[@class=“fa fa location arrow fa lg”]/parent::p#,[$handler\u trim]],
hand=>[q#//i[@class=“fa-hand-o-right fa lg”]/parent::p#,[$handler\u trim,$handler\u split\u comma]],
图片编号=>[q#//p[包含(,'pic no')]#,[$handler\u val]],
}  
};  
打印转储程序浏览($conf);
子浏览{
我的$conf=shift;
我的$ref=[];
我的$lwp#u useragent=lwp::useragent->new(agent=>q#IE 6#,timeout=>10);
my$response=$lwp_useragent->get($conf->{url});
除非$response->成功,否则die$response->状态\u行;
my$content=$response->解码内容;
我的$html\u treebuilder\u xpath=html::treebuilder::xpath->new\u from\u content($content);
my@nodes=$html\u treebuilder\u xpath->findnodes($conf->{parent});
对于我的$node(@nodes){
推送@$ref,{};
而(my($key,$val)=each%{$conf->{children}}{
我的$xpath=$val->[0];
my$handlers=$val->[1]/[];
$val=($node->findValue(qq#.$xpath#))[0]//下一步;
$val=$\->($val)表示@$handlers;
$ref->[-1]->{$key}=$val;
}  
}  
返回$ref;
} 
{  
'内部url'=>'https://europa.eu/youth/volunteering/organisation/948417016_en',  
'外部url'=>'http://www.apd.ge',  
“地点”=>“格鲁吉亚第比利斯”,
“和平与发展学院”联盟,
“主题”=>[
“弱势群体的准入”,
“青年(参与、青年工作、青年政策)”,
“跨文化/代际教育和(终身)学习”
],  
“图片编号”=>“948417016”,
“手”=>[
“接收”,
“发送”
]  
} 
我们的$iterator_organizations=sub{
我的($browser,$parent)=@;
我的$url=q#https://europa.eu/youth/volunteering/evs-organisation_en#;  
我的$nodes=$browser->nodes(url=>$url);
my$iterator=sub{
返回移位@$节点;
};  
返回($iterator,1);
我们的$iterator\u b=sub{
我的($browser,$parent)=@;
我的$url=q#https://europa.eu/youth/volunteering/evs-organisation_en#;  
my$uri=uri->new($url);
我的$xpath=q#//div[@class=“vp ey_block is flex”]#;
我的$nodes=[];
我的$page=0;
my$results=$parent->{results};
my$page_max=$results/21;
$page_max=int($page_max)==$page_max?$page_max--:int($page_max);
我的$iterator_uri=sub{
$uri->query_表单(page=>$page++);
返回$page>2?未定义:$uri;#$page_max;
};  
我的$iterator_node=sub{
除非(@$nodes){
my$uri=$iterator_uri->()//返回undef;
我的$options=$page==1?{tree=>$parent->{{u node}}:{url=>$uri->as_string};
$nodes=$browser->nodes(%$options,xpath=>$xpath);
}  
返回移位@$节点;
};  
返回($iterator_node,0);
};  
我们的$iterator_组织=sub{
我的眉毛