2012-11-16 25 views
5

javascript'i çalıştırın HTTPWebRequest ile bir web sayfasını getirmenin ve ajax çağrıları ile birlikte sayfada bulunan tüm javascriptcode'u çalıştırmanın ve sonucu bir dizeye kaydetmenin bir yolu var mı?C# HTTPWebRequest ile bir web sayfası çekin ve siteden

Bazı resimlerin js kodu ile oluşturulduğu bir web sitesini ayrıştırmak istiyorum ve js komut dosyası çalıştırılmadan önce görüntüler web sayfasında bulunmuyor.

Şimdi bir çözüm için web'de arama yaptım, ancak bulduğum tüm cevaplar bu mümkün değil, bunun yerine benim için bir seçenek olan web tarayıcısını kullanın.

Selamlar

+1

WebBrowser sınıfını kullanmanın neden bir seçenek olmadığını açıklayabilir misiniz? – alexn

+0

http://notions.okuda.ca/2009/06/11/calling-javascript-in-a-webbrowser-control-from-c/ alexn'ın önerdiği ayrıntı. * A * web tarayıcısını kullanamıyorsanız, * * WebBrowser' nesnesini kullanamıyorsanız Q'nuzdan söyleyemem. –

+0

WebBrowser yavaş ve bazen buggy, hız bana göre önemli. – maddo7

cevap

2

Bunu, aldığınız veri parçaları üzerinde çok fazla kontrol sağlayan C++ http sistemi ile yapabilirsiniz, ama sanırım bu gerçekten bir cevap değil.

Neden webkit into your app ürününü çalıştırmayı deniyor ve bundan sonraki olayları çalıştırmıyorsunuz. İndirme işlemleri başladığında ve bittiğinde sizi uyarabilecek çeşitli etkinlikler var.

+0

Bunu yapmanın hızlı ve kolay yolu, WebBrowser denetimi, onun için en iyisi, .NET WebKit sarmalayıcıyı kullanmaktır. –

0

Bu çok-Gerekli talebi karşılamak için çalışırken öğrendim gibi gerçekten de mümkün değildir. Javascript yürütülür, ancak Ajax aramaları yapılmayacaktır.

Yerleştiğim çözüm, Ajax çağrılarının kod arkasındaki dosya (C# kodu) aracılığıyla eşzamanlı olarak sahip olacağı tüm verileri almak ve komut dosyası etiketlerini kullanarak Javascript değişkenlerine kod arkasındaki değişkenleri atamak ve Javascript işini yapmak (dinamik elemanlar oluşturmak vb.)

+0

ve ajax aramaları olmadan javascript'i çalıştırmak için ne kullandınız? – maddo7

+0

Sync Javascript, herhangi bir web isteğinde yine de yürütür. Sadece başarısız olduğunda uyumsuz kod (ajax çağrıları, geri aramalar) ile. Soruyu cevaplamak için: ASP.NET'te 'WebRequest 'sınıfını kullandım. –

1

Biraz araştırma yaptım çünkü ilginç olduğunu düşündüm. İhtiyacınız olan şeyi yapıyor gibi görünen Phantom.js adlı bir şey buldum. Şuna bir bakın: http://phantomjs.org/

+0

İlginç bir proje, ancak daha özgür ve C# kullanım için değil gibi görünüyor. –