perl – 使用HTML :: TreeBuilder :: XPath访问href值
发布时间:2020-12-16 06:06:35 所属栏目:大数据 来源:网络整理
导读:我正在使用 LWP::UserAgent , HTML::Selector::XPath 和 HTML::TreeBuilder::XPath 模块用于获取一组搜索结果中第一个YouTube视频的href属性的值. 到目前为止我的代码是: use LWP::UserAgent;use HTML::TreeBuilder::XPath;use HTML::Selector::XPath;my $u
我正在使用
LWP::UserAgent ,HTML::Selector::XPath 和
HTML::TreeBuilder::XPath 模块用于获取一组搜索结果中第一个YouTube视频的href属性的值.
到目前为止我的代码是: use LWP::UserAgent; use HTML::TreeBuilder::XPath; use HTML::Selector::XPath; my $ua = LWP::UserAgent->new; #my $response =.. my $html = "http://www.youtube.com/results?search_query=run+flo+rida"; my $tree = HTML::TreeBuilder::XPath->new; my $xpath = HTML::Selector::XPath::selector_to_xpath("(//*[@id = 'search-results']/li)[1]/div[2]/h3/a/@href/"); my @nodes = $tree->findnodes($xpath); print" $nodes[0]"; 如果其他语法错误,我不确定我的打印是否不正确.截至目前,它打印 HTML::TreeBuilder::XPath=HASH(0x1a78250) 当我正在寻找它打印 /watch?v=JP68g3SYObU 谢谢你的帮助! 解决方法
这里有很多问题.
>您必须始终在每个Perl程序的顶部使用strict并使用警告.它会捕获您很容易忽略的许多错误,并且只有在您寻求代码帮助时才有礼貌.在这种情况下,它会警告您,您的XPath字符串包含数组变量名@id和@href,您可能没有打算将其插入到字符串中. 这个程序似乎做你需要的.我还添加了URI模块,以从href属性值中的相对值派生绝对URL. use strict; use warnings; use HTML::TreeBuilder::XPath; use URI; my $url = "http://www.youtube.com/results?search_query=run+flo+rida"; my $tree = HTML::TreeBuilder::XPath->new_from_url($url); my $anchor = $tree->findnodes('//ol[@id="search-results"]//h3[@class="yt-lockup2-title"]/a/@href'); my $href = URI->new_abs($anchor->[0]->getValue,$url); print $href; 产量 http://www.youtube.com/watch?v=JP68g3SYObU (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |