2012-08-22 2 views
0

저는 간단한 html dom을 사용하여 politifact에서 일부 데이터를 수집하기 위해 노력했지만 많은 시간 동안 html 대신 예상치 못한 오류가 발생합니다. 목표는 사이트를 무차별 공격하는 것이 아니라 하루에 한두 번 요청하고 결과를 캐시하는 것입니다.간단한 html Dom을 사용하여 사이트를 크롤링 할 때 이상한 결과가 발생했습니다.

‹������í]{wÛ6²ÿ»=g¿ªn#»1EËJœÄ–µ×vœ&ÙÄñÚn²{r{|( ’S$ÇeuÛï~3न‡c'ÛísNÄ`f0˜Úß=}sxþ¯“#1ŠÆŽ8ùùàÕ‹CQ3Ló]ëÐ4Ÿž?ÿ|~þú•h66Åy`¹¡Ùžk9¦yt\µQù;¦9™L“... 

을 그리고 여기에 슈퍼 간단한 코드입니다 : 다음은 수익의 대부분은 내가 얻을

$html = file_get_html('http://www.politifact.com/personalities/barack-obama'); 
print_r($html->plaintext); 

당신이 어떤 아이디어 이유가 있습니까는? 웹 사이트의 일부 보호/리디렉션은 무엇입니까?

대단히 감사합니다!

답변

1

예상되는 페이지를 받았지만 gzip 형식입니다. accept-encoding 헤더가 요청에 포함되어 있지 않고 기본 일반 텍스트 응답을 보내지 않고 gzipped 데이터를 보내면 서버가 문제가없는 것처럼 보입니다.

내가 간단한 HTML-DOM 데이터의 압축을 풀 수 있다고 생각하지 않습니다,하지만 당신은 그 목적을 위해 컬을 사용할 수는 :

$ch = curl_init('http://www.politifact.com/personalities/barack-obama/'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); 

$data = curl_exec($ch); 

$html = str_get_html($data); 
+0

이 완벽 보인다! 하지만 지금은 cURL이 정말 이상한 빈 문자열을 반환합니다. o_O – mdcarter

+0

아아아는 단락 슬래시가 누락 되었기 때문에! 그 트릭을 했어, 정말 고마워! – mdcarter