【问题标题】:Is there a way to set connection timeout of XML::LibXML->load_html( location => $url)有没有办法设置 XML::LibXML->load_html(location => $url) 的连接超时
【发布时间】:2020-06-29 05:42:53
【问题描述】:
我的网络非常糟糕。我想调整 XML::LibXML 的连接超时有什么办法吗?还是我需要先用 LWP 加载 html ?
my $doc = XML::LibXML->load_html( location => $url, recover => 2 );
【问题讨论】:
-
超时参数不是Perl设置的,它在C库libxml2里面。顺便说一句,C 模块似乎只能获取 http(不是 https 协议)。所以我认为你需要先使用 Perl 模块LWP::UserAgent 来获取 html 页面
-
标签:
perl
libxml2
xml-libxml
【解决方案1】:
就个人而言,我会使用Mojo::UserAgent:
#!/usr/bin/env perl
use strict;
use warnings;
use Mojo::UserAgent;
use XML::LibXML;
my $url = "https://www.w3schools.com/xml/cd_catalog.xml";
my $ua = Mojo::UserAgent->new();
$ua->max_redirects(0)->connect_timeout(3)->request_timeout(5);
my $xml = $ua->get( $url )->result->body;
my $doc = XML::LibXML->load_xml( string => $xml );
print $doc->toString();