2017-02-10 5 views
1

WWW::Mechanize에 다음 URL을 가져온 후 내용이 비어있는 이유는 무엇입니까? 브라우저 또는 curl을 사용하면 검색된 전체 HTML 페이지가 있습니다. 여기 WWW :: Mechanize가 "X-Died : 잘못된 필드 이름"으로 실패하는 이유 X-Meta-Twitter : title ' "?

use WWW::Mechanize; 
$mech = new WWW::Mechanize; 
$mech->get("http://www.belizejudiciary.org/web/judgements2/"); 
print $mech->content # prints nothing 

응답의 덤프입니다 :

HTTP/1.1 200 OK 
Connection: close 
Date: Fri, 10 Feb 2017 00:51:47 GMT 
Server: Apache/2.4 
Content-Type: text/html; charset=UTF-8 
Client-Aborted: die 
Client-Date: Fri, 10 Feb 2017 00:51:48 GMT 
Client-Peer: 98.129.229.64:80 
Client-Response-Num: 1 
Client-Transfer-Encoding: chunked 
Link: <http://www.belizejudiciary.org/web/wp-json/>; rel="https://api.w.org/" 
Link: <http://www.belizejudiciary.org/web/?p=468>; rel=shortlink 
Set-Cookie: X-Mapping-hepadkon=FAB86566672CEB74D66B2818CA030616; path=/ 
X-Died: Illegal field name 'X-Meta-Twitter:title' at /usr/local/lib/perl5/site_perl/5.16.3/sun4-solaris/HTML/HeadParser.pm line 207. 
X-Pingback: http://www.belizejudiciary.org/web/xmlrpc.php 

나는 HTML 버전 3.70이 :: 파서가 설치되어 있어야합니다.

+0

나는 아무것도 얻지 않는다. 어떤 모듈 버전을 사용합니까? 'Use Data :: Dumper;의 내용은 무엇입니까? print Dumper ($ mech-> response)'? – choroba

+0

@choroba 필자의 시스템에는'HTML : Parser'의 3.70 버전이 있기 때문에 문제가 될 수 있습니다. 응답에 대한 편집을 참조하십시오. – CJ7

+0

@ choroba는'get' 전에'$ mech-> parse_head (0)'를 추가하여 문제를 해결했습니다. 이 답변에서 : http://stackoverflow.com/a/17745491/327528 – CJ7

답변

2

덤프가 응답을 구문 분석 오류가 있음을 보여줍니다

X-사망 : 잘못된 필드 이름 'X-메타 트위터 : 제목을'에서/usr/지방/lib 디렉토리/perl5의/site_perl/5.16.3 /을 sun4 - 솔라리스/HTML/HeadParser.pm 라인 (207)

이것은 HTML :: HeadParser에 bug에 의해 발생 :

이름을 가질 수 있습니다

<meta> 태그 콜론으로 속성 그 (것)들에서, 이것은 완벽하게 유효하다. 그러나 HTML :: HeadParser는 다음을 HTTP :: Headers를 사용하여 X-Meta-<name> 헤더로 등록하려고 시도합니다. 최신 버전의 HTTP :: Headers (6.05부터)에서는 헤더에 대한 엄격한 검사가 이루어졌으며 콜론이 포함되어 있으면 거부합니다.

이것은 HTML 파서 배포판의 3.71 버전에서 수정되었으므로 업그레이드해야합니다.