J'ai une tâche simple, mais il faudra que quelqu'un qui connaît le système CefSharp la résolve.Utilisation de CefSharp.Offscreen pour récupérer une page Web qui nécessite Javascript pour afficher
J'ai une URL que je veux récupérer le HTML. Le problème est que cette URL ne distribue pas réellement la page sur un GET. Au lieu de cela, il pousse un tas de Javascript dans le navigateur, qui exécute alors et produit la page rendue réelle. Cela signifie que les approches habituelles impliquant HttpWebRequest
et HttpWebResponse
ne vont pas fonctionner.
J'ai regardé un certain nombre de différentes options "sans tête", et celui que je pense le mieux à mes besoins pour un certain nombre de raisons est CefSharp.Offscreen. Mais je ne sais pas comment cette chose fonctionne. Je vois qu'il y a plusieurs événements auxquels on peut s'abonner, et quelques options de configuration, mais je n'ai pas besoin de quelque chose comme un navigateur intégré.
Tout ce que je vraiment besoin est un moyen de faire quelque chose comme ça (pseudo-code):
string html = CefSharp.Get(url);
Je n'ai pas un problème inscrivez-vous à des événements, si c'est ce qu'il faut attendre le Javascript pour exécuter et produire la page rendue.
Voir https://gist.github.com/amaitland/9d8897067bdff5b999a1 devrait vous aider à démarrer. – amaitland
@amaitland: Merci. Quelle est la manière actuelle d'attendre que le Javascript soit exécuté et que la page soit entièrement rendue avant d'obtenir le code HTML résultant? NavStateChangedEventArgs ne semble plus exister. –
'NavStateChanged' =' LoadingStateChanged'. Il n'y a pas d'événement qui attend que javascript se termine, le mieux c'est que la page a fini de charger. J'ai vu des gens attendre juste un certain temps, ce qui fonctionne dans certains cas. Vous trouverez peut-être plus facile d'injecter du javascript, vérifiez certaines conditions sur la page. – amaitland