YQL: la tabella html non è più supportata

Io uso YQL per ottenere alcune pagine html per leggere le informazioni al di fuori di esso. Da oggi ricevo il messaggio di ritorno “La tabella html non è più supportata. Vedi https://policies.yahoo.com/us/en/yahoo/terms/product-atos/yql/index.htm per i termini d’uso di YQL”

Esempio nella console: https://developer.yahoo.com/yql/console/#h=select+ * + da + html + dove + url% 3D% 22http% 3A% 2F% 2Fwww.google.de% 22

Yahoo ha interrotto questo servizio? Qualcuno conosce un tipo di annuncio da Yahoo? Mi chiedo se questo sia semplicemente un bug o se abbiano davvero fermato questo servizio …

Tutta la documentazione è ancora lì (html scraping): https://developer.yahoo.com/yql/guide/yql-select-xpath.html , https://developer.yahoo.com/yql/

Qualche tempo fa ho postato in un forum YQL di Yahoo, ora questo non esiste più (o almeno non lo trovo). Come puoi contattare Yahoo per sapere se questo servizio si è veramente fermato?

Cordiali saluti, hebr3

Sembra che Yahoo abbia effettivamente terminato il supporto della libreria html dal 6/8/2017 (secondo i miei log degli errori). Non sembra esserci ancora alcun annuncio ufficiale di ciò.

Fortunatamente, esiste una libreria della comunità YQL che può essere utilizzata al posto della libreria html ufficiale con poche modifiche al codice base. Vedi la tabella htmlstring nella YQL Console .

Modifica la query YQL in modo che faccia riferimento a htmltable anziché a html e includi l’ambiente di comunità nella query REST. Per esempio:

/*/ Old code /*/ var site = "http://www.test.com/foo.html"; var yql = "select * from html where url='" + site + "' AND xpath='//div'"; var resturl = "https://query.yahooapis.com/v1/public/yql?q=" + encodeURIComponent(yql) + "&format=json"; 

 /*/ New code /*/ var site = "http://www.test.com/foo.html"; var yql = "select * from htmlstring where url='" + site + "' AND xpath='//div'"; var resturl = "https://query.yahooapis.com/v1/public/yql?q=" + encodeURIComponent(yql) + "&format=json" + "&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys"; 

Grazie mille per il tuo codice.

Mi ha aiutato a creare il mio script per leggere quelle pagine di cui ho bisogno. Non ho mai programmato PHP prima, ma con il tuo codice e la saggezza di internet potrei cambiare il tuo script in base alle mie esigenze.

PHP

 loadHTML($html); // apply xpath filter $xpath = new DOMXPath($dom); $elements = $xpath->query($xpathQuery); $temp_dom = new DOMDocument(); foreach($elements as $n) $temp_dom->appendChild($temp_dom->importNode($n,true)); $renderedHtml = $temp_dom->saveHTML(); // return html in json response // json structure: // {html: "xxxx"} $post_data = array( 'html' => $renderedHtml ); echo json_encode($post_data); ?> 

Javascript

 $.ajax({ url: "url of service", dataType: "json", data: { url: url, xpath: "//*" }, type: 'GET', success: function() { }, error: function(data) { } }); 

Anche se YQL non supporta più la tabella html, mi sono reso conto che invece di effettuare una chiamata di rete e analizzare i risultati è ansible effettuare più chiamate. Ad esempio, la mia chiamata prima sarebbe simile a questa:

 select html from rss where url="http://w1.weather.gov/xml/current_obs/KFLL.rss" 

Quale dovrebbe darmi le informazioni come di seguito

inserisci la descrizione dell'immagine qui

Ora dovrei usare questi due:

select title from rss where url="http://w1.weather.gov/xml/current_obs/KFLL.rss"

select description from rss where url="http://w1.weather.gov/xml/current_obs/KFLL.rss"

.. per ottenere ciò che voglio Non so perché deprecano qualcosa di simile senza una riserva chiaramente elencata, ma dovresti essere in grado di ottenere i tuoi dati in questo modo.