2015-04-17 8 views
7

Sto provando ad analizzare Instagram (creato con React) con Node.js/Cheerio. Il debug del documento mostra un oggetto restituito, ma non assomiglia alla tipica risposta.È possibile analizzare un sito Web React (Instagram) con Cheerio?

Immagino che questo abbia a che fare con React. C'è un modo per aggirare questo, e tirare il DOM reso per analizzare con Cheerio? O mi manca qualcosa del tutto?

Grazie in anticipo.

+0

Nessun codice, nessun messaggio di errore esatto, nessuna procedura esatta per riprodurre, sto cercando di indovinare che ti manca [how-to-ask] (http://stackoverflow.com/help/how-to- Chiedere). Certo, con la tua tastiera e il tuo debugger puoi raschiare anche il sito web costruito con 'React' con' Cheerio'. Ma potresti aver bisogno di uno strumento più potente come 'PhantomJS' o' SeleniumHQ' in grado di eseguire script, attendere la loro esecuzione ecc. – xmojmr

+3

Questa è una domanda concettuale con una risposta binaria - grazie per essere inutile. –

+0

Caro @Kyle, la disponibilità è basata sull'opinione pubblica. Credo che la tua domanda non sia abbastanza buona e tu possa migliorarla. Non vedo un "concetto" nella tua domanda. La risposta binaria è sì, è possibile. Ma cosa intendi esattamente facendo il debug del documento? Quale documento? Qual è il messaggio di errore? jsFiddle da riprodurre? – xmojmr

risposta

7

Nel caso generale, se il sito Web è SEO friendly, è possibile farlo spoofing della stringa dell'agente utente di un crawler web. Questo restituisce un DOM reso che può essere analizzato da Cheerio.

Nel caso specifico - Instagram restituisce un DOM renderizzato sui suoi siti Web mobili. Spoof della stringa dell'agente utente di un telefono cellulare e puoi analizzare i dati che vengono restituiti.

 var options = { 
     url: user.instagram_url, 
     headers: { 
      'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4' 
     } 
     }; 

     request(options, function(error, response, html) { 
     if (!error) { 

      console.log('Scraper running on Instagram user page.'); 

      // Use Cheerio to load the page. 
      var $ = cheerio.load(html); 

      // Code to parse the DOM here 

     } 
     } 
+0

Puoi spiegare "_virtual DOM reso su un sito web mobile non analizzabile da Cheerio_"? Qualche collegamento "vedi anche" o un frammento di esempio 'html' restituito dalla query _unspoofed_? Qualcosa in modo che qualcun altro possa comprendere quale tipo di problema hai trovato e risolto? So cosa sono instagram, node.js, cheerio, html, css, javascript, modello di oggetti documento, ottimizzazione dei motori di ricerca e altre cose, ma comunque trovo difficile immaginare cosa vedi guardando lo schermo del tuo computer ... – xmojmr

+0

@Kyle: non sono in grado di trovare un sito Web mobile che possa essere aperto sul mio desktop per Instagram. per favore dai un link se lo hai. Grazie . –

+0

Devi modificare la stringa del tuo agente utente. Puoi farlo utilizzando l'emulazione del browser Chrome o nelle opzioni di Cheerio come ho fatto sopra. –

Problemi correlati