2010-06-24 3 views
2

일부 화면 스크래핑에 YQL을 사용하고 있으며 따옴표와 같은 문자가 제대로 반환되지 않습니다.YQL 및 cURL - 따옴표 문자가 제대로 반환되지 않습니다.

예를 들어, 스크랩 된 페이지의 마크 업입니다 :이 또한 진드기와 백 틱으로 발생

There should not be a �split between what we think and what we do,� 

:

There should not be a “split between what we think and what we do,” 

이 같이 YQL에 의해 반환됩니다.

var qurlString = '&url=' + encodeURIComponent(url); 
$.ajax({ 
    type: "POST", 
    url: "/k_sys/qurl.php", 
    datatype: "xml", 
    data: qurlString, 
    success: function(data) { 
    //do something 
    } 
}); 

그리고 내 qurl.php 같은 것입니다 :

내 JS 같은입니다

$BASE_URL = "http://query.yahooapis.com/v1/public/yql"; 
    $url = my scraped site url; 
    $yql_query = "select * from html where url='$url'"; 
    $yql_query_url = $BASE_URL . "?q=" . urlencode($yql_query) . "&format=xml"; 
    $session = curl_init($yql_query_url); 
    curl_setopt($session, CURLOPT_RETURNTRANSFER,true); 
    $xml = curl_exec($session); 
    echo $xml; 

이 곱슬 문제 또는 YQL 문제, 내가 해결하기 위해 필요한 것은 무엇인가 그것?

감사합니다.

답변

0

페이지를 IIS와 ASP에 의해 제공되는 소스입니다. 간단한 검색을 수행하고 다음과 같이 바꿔야 만했습니다.

str_ireplace(chr(145), chr(39), $html) 
1

이것은 문자 인코딩 문제와 비슷합니다. 스크래핑하는 사이트는 http 헤더의 문자 인코딩을 올바르게 식별하도록 서버를 구성하는 대신 head 요소에 메타 태그를 사용하여 문자 집합을 설정할 수 있습니다. 사이트에서 사용하는 문자 인코딩을 확인하십시오 (브라우저의보기 메뉴에서이를 찾을 수 있어야합니다). YQL 쿼리에 문자 세트 키를 추가하십시오. YQL 가이드에서

예 :

select * from html where url='http://example.com' and charset='iso-8559-1' 
관련 문제