Pregunta

Estoy utilizando YQL para algunos captura de imágenes, y cualquier Cotización en los que los caracteres no están siendo devueltos correctamente.

Por ejemplo, el marcado en la página que se está raspada es:

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

Este es devuelto por YQL como:

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

Esto también sucede con las garrapatas y las copias de las garrapatas.

Mi JS es como:

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

Y mi qurl.php es como:

  $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;

Es este un tema o un problema de cURL YQL, y qué tengo que hacer para solucionarlo?

Gracias!

¿Fue útil?

Solución 2

Las páginas de código son atendidos por IIS y ASP. Acabé tener que hacer una búsqueda simple y reemplazar como:

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

Otros consejos

Esto suena como un problema de codificación de caracteres. El sitio que está raspando puede determinarse el conjunto de caracteres usando una etiqueta meta en el elemento de cabeza en lugar de la configuración del servidor para identificar correctamente la codificación de caracteres en el encabezado HTTP. Averiguar la codificación de caracteres utilizado en el complejo (que debería ser capaz de encontrar esto en vista de menú de su navegador) y añadir la clave de juego de caracteres a su consulta YQL.

Ejemplo de la guía YQL:

select * from html where url='http://example.com' and charset='iso-8559-1' 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top