2014-03-14 2 views
1

중국어 웹 사이트에서 HTML 소스를 추출하는 스크립트를 작성하고있었습니다. 나는 file_get_contents가 중국어 웹 사이트를 열지 못했습니다.

enter image description here

내가 아니라 내 대상 웹 사이트에 콘텐츠 형식을 발견, 아래
$html = file_get_contents($url); 
echo $html; 

얻을 결과, 웹 파일을 읽을 file_get_contents에게을 시도

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 

그래서 나는 conv를 시도했다. 상기 옵션으로 UTF-8로 결과 ​​현재 보이고

$html = file_get_contents('http://newhouse.bt.soufun.com/house/web/Search_Result.php'); 
$html = mb_convert_encoding($html,'utf-8','GB2312'); 
echo $html; 

,

enter image description here

결과를 erting 것은 I 페이지의 적절한 소스를 얻을 수 있으며, 이는 상기 해석 할 수 없었던 . HTML을 구문 분석하고 DOM 파서를 사용하여 구조화 된 데이터를 가져와야합니다. 여기에 더 이상 구문 분석 할 수없는 잘못된 HTML 응답이 나타납니다.

나는 CURL뿐만 아니라 file_get_contents를 시도했다.

현재이 시점에서 고민 중입니다. 도움이나 제안을 보내 주시면 대단히 감사하겠습니다. 고맙습니다.

+1

그냥 소스 인코딩을 가정하지 마십시오, 동부 국가는 알파벳 더 편리 인코딩의 모든 종류를 사용합니다. '$ html = mb_convert_encoding ($ html, 'utf-8', mb_detect_encoding ($ html));'문제가 아니라고 생각합니다. 바이너리 내용을 다시 얻고있는 것 같습니다. – GordonM

+0

@GordonM 예. 바이너리 내용을 다시. – Surabhil

답변

2

아마도 사이트에서 압축 된 콘텐츠를 반환하고 있습니다. 그래서 해독하십시오. 원하는 경우 gzdecode을 사용할 수 있습니다.

다른 방법으로는 압축 된 콘텐츠를 자동으로 디코딩 컬 사용할 수 있습니다

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_ENCODING, ""); // handling all compressions 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0'); 
$result = curl_exec($ch); 
curl_close($ch); 
print $result; 
+0

curl에 +1하면, url_fopen은 많은 경우에 그것을 감축하지 않습니다. – GordonM

+2

고맙습니다 ...! 그것은 효과가있었습니다. 그러나 결과는 다음과 같은 특수 문자를 보여주었습니다. ѷ ҳ | Ѷ | · ַ ⷿ | וו ޼ Ҿ | ҵ ̳ | ز | ֻ ѷ 다음 코드를 추가하면 완벽하게 작동합니다. $ 결과 = mb_convert_encoding ($ 결과, 'utf-8', 'GB2312'); – Surabhil

+0

@Surabhil 나는 당신의 질문에 당신이 단지 GB2312을 가정보다 mb_detect_encoding을 사용해야한다고 언급했다. – GordonM

관련 문제