Revize (açıklık soru)Bir facebook oyun verileri kazımak gerekir - yakut
Birkaç gün önceden bir facebook oyundan belirli bilgileri kazımak nasıl anlamaya çalışırken geçirdim; Ancak, tuğla duvardan sonra tuğla duvara koştum. Anladığım kadarıyla, asıl sorun şu şekildedir. İhtiyacım olan html'yi manuel olarak bulmak için Chrome'un inceleme aracı aracını kullanabilirim - bir iframe içine yerleştirilmiş gibi görünür. Ben denemek ve bu iframe kazımak Ancak, bu (özellikleri hariç) boş:
<iframe id="game_frame" name="game_frame" src="" scrolling="no" ...></iframe>
Buna "Sayfa kaynağını" aracı bir tarayıcı kullanıyorsanız gördüğüm aynı çıkıştır. iframe'deki verileri neden göremiyorum anlamıyorum. Cevap, AJAX tarafından sonradan eklenmesi DEĞİLDİR. (Bunun nedeni, "Sayfa kaynağını görüntüle" Ajax tarafından eklenen verileri okuyabildiğinden ve ayrıca veri sayfasını görebilmemden sonra beklediğimden ve beklemeden beklediğimden beri biliyorum).
Bu durum, facebook'un ekran karşıtı kazıma işleminden kaynaklanıyor mu? Bu durumun bir yolu var mı? Yoksa sadece bir şeyi özlüyorum. Ruby'de programlıyorum ve nokogiri denedim, sonra mekanize ettik, sonra kapibara başarı olmadan.
Herhangi bir fark yaratıp yaratmadığını bilmiyorum, ancak iframe'nin iframe'in "game_frame" referansını kullanarak, bu belgede daha önce görünen bu html parçasını ifade eden bir veriyi kullanıyor olması bana öyle geliyor:
<form id="hidden_login_form_1331840407" action="" method="POST" target="game_frame">
<input type="hidden" name="signed_request" autocomplete="off" value="v6kIAsKTZa...">
...
</form>
Orijinal soru Ben facebook oyunun HTML veri kazımak için Nokogiri kullanan bir yakut program yazdım. Şu anda, HTML'yi "inceleme elemanı" aracını kullanarak aldım ve onu bir dosyaya kaydedip oradan ayrıştırıyorum. Bununla birlikte, ruby'nin içinden bilgiye erişmeyi gerçekten çok isterim. Örneğin, programa "www.gamename.com/...?id=12345" sayfa adını aktarırdım ve facebook'a giriş yapar, o sayfaya gider ve verileri kazıyabilirim. Şu anda, bunu denerseniz, işe yaramıyor çünkü facebook'un giriş sayfasına yönlendiriliyordum. İhtiyacım olan sayfaya (sayfalara) erişmek için giriş ekranını nasıl geçebilirim?
Bunu daha önce yazdığım nokogiri kodunu kullanarak yapmak istiyorum; Ancak, eğer gerekiyorsa başka bir şey kullanarak yeniden yazabilirim. Şu anda, program bağımsız bir program - bir ray programı değil - ama bunu değiştirebilirdim. Beni Omniauth yönünde yönlendirebilecek bazı bilgiler görüyorum ama aradığım şeyden emin değilim ve aynı zamanda çok karmaşık görünüyor. Umarım daha basit bir çözüm vardır.
Teşekkür
ihtiyacım olan bilgiyi almak için Capybara'yı kullanmak. En büyük yapışkan nokta, ihtiyacım olan bilginin bir çerçeve içinde yer alması nedeniyle, ana sayfa için HTML'de görünmemesiydi. Ancak, nihayet, iç çerçeve yöntemini kullanmış olsaydım, çerçevedeki bilgilere erişebildiğimi ve bunun işe yaradığını fark ettim. –