2015-04-17 18 views
7

Node.js/Cheerio ile Instagram'ı (React ile oluşturulmuş) kazımaya çalışıyorum. Belgede hata ayıklama, döndürülen bir nesneyi gösterir, ancak tipik yanıt gibi görünmüyor.Bir React web sitesini (Instagram) Cheerio ile kopyalamak mümkün mü?

Bunun, React ile ilgisi olduğunu tahmin ediyorum. Bunu aşmanın bir yolu var mı ve işlenmiş DOM'ı Cheerio ile ayrıştırmak için mi? Yoksa tamamen bir şeyi mi özlüyorum?

Şimdiden teşekkürler.

+0

Kod yok, hiçbir hata mesajı tam olarak, çoğaltmak kesin adımlar, sana [how-to-ask] (http://stackoverflow.com/help/how-to- eksik tahmin ediyorum Sor). Elbette, klavyeniz ve hata ayıklayıcınız ile 'Chequid' ile 'React' ile oluşturulan web sitesini bile kazıyabilirsiniz. Ancak betikleri çalıştırabilen "PhantomJS" veya "SeleniumHQ" gibi daha güçlü bir araca ihtiyacınız olabilir, bunların yürütülmesi için beklersiniz. – xmojmr

+3

Bu, ikili bir cevapla kavramsal bir sorudur - yararsız olduğunuz için teşekkür ederiz. –

+0

Sevgili @Kyle, yardımseverlik fikir temelli. Senin sorununun yeterince iyi olmadığına ve onu geliştirebileceğine inanıyorum. Sorunuzda bir "kavram" görmüyorum. İkili cevap evet, mümkün. Ama tam olarak ne demek istediniz? Hangi belge? Hata mesajı nedir? jsFiddle çoğaltmak için? – xmojmr

cevap

7

Genel durumda - web sitesi SEO dostu ise, bir web gezgininin kullanıcı aracısı dizgesini taklit ederek yapabilirsiniz. Bu, Cheerio tarafından ayrıştırılabilen bir işlenmiş DOM döndürür.

Belirli durumda - Instagram, mobil web sitelerinde işlenen bir DOM değerini döndürür. Bir cep telefonunun kullanıcı aracısı dizesini parolayın ve döndürülen verileri ayrıştırabilirsiniz.

 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

"Cheerio_ tarafından ayrıştırılamayan bir mobil web sitesinde oluşturulan" _virtual DOM "açıklayabilir misiniz? Bazı "ayrıca bkz" hiperlink veya _unspoofed_ sorgudan bazı "html" snippet örnekleri döndü? Bir şey, başka birinin ne tür bir problemi bulduğunuzu ve çözdüğünüzü anlayabilmesi için mi? Ne instagram, node.js, cheerio, html, css, javascript, belge nesne modeli, arama motoru optimizasyonu ve diğer şeyler biliyorum, ama hala bilgisayar ekranına bakarken ne görüyorsun görüntü için zor buluyorum ... – xmojmr

+0

@Kyle: Instagram için masaüstümde açılabilecek bir mobil web sitesi bulamıyorum. eğer varsa lütfen bir bağlantı verin. Teşekkür ederim . –

+0

Kullanıcı aracısı dizginizi değiştirmeniz gerekir. Bunu, Chrome tarayıcı öykünmesini kullanarak veya yukarıdaki yaptığım gibi Cheerio seçeneklerinde yapabilirsiniz. –

İlgili konular