Comment avez-vous gratter pages AJAX?
Veuillez vous conseiller sur la façon de gratter pages AJAX.
Vous devez vous connecter pour publier un commentaire.
Veuillez vous conseiller sur la façon de gratter pages AJAX.
Vous devez vous connecter pour publier un commentaire.
Vue d'ensemble:
Tous capture d'écran de la première exige la révision manuelle de la page que vous souhaitez extraire les ressources d'. Lorsque vous traitez avec AJAX-vous habituellement seulement besoin d'analyser un peu plus que de simplement le code HTML.
Lorsque vous traitez avec AJAX cela signifie que la valeur que vous souhaitez n'est pas dans le premier document HTML que vous avez demandé, mais que javascript soit exécutée qui demande au serveur, les informations supplémentaires que vous souhaitez.
Par conséquent, vous pouvez simplement analyser le javascript et voir ce qui demande le javascript fait et il suffit d'appeler cette URL au lieu de cela depuis le début.
Exemple:
Prendre cela comme un exemple, supposons que la page que vous souhaitez gratter à partir de a le script suivant:
Alors tout ce que vous devez faire, c'est plutôt faire une requête HTTP à l'heure.asp de la même serveur. Exemple de w3schools.
Avancée de grattage avec C++:
Complexes d'utilisation, et si vous êtes à l'aide de C++, vous pourriez aussi envisager d'utiliser le moteur javascript de firefox, SpiderMonkey pour exécuter javascript sur une page.
Avancée de grattage avec Java:
Complexes d'utilisation, et si vous êtes à l'aide de Java, vous pourriez aussi envisager d'utiliser le moteur javascript de firefox, Java Rhino
Avancée de grattage avec .NET:
Complexes d'utilisation, et si vous êtes en utilisant .Net, vous pouvez également envisager l'utilisation de la suite Microsoft.vsa assemblée. Récemment remplacé par ICodeCompiler/CodeDOM.
À mon avis la plus simple solution consiste à utiliser Casperjs, un cadre basé sur le WebKit navigateur sans phantomjs.
L'ensemble de la page est chargée, et il est très facile à gratter tout ajax des données liées.
Vous pouvez consulter ce tutoriel de base pour apprendre Automatisation & Raclant avec PhantomJS et CasperJS
Vous pouvez également donner un coup d'oeil à cet exemple de code, sur la façon de gratter google suggère des mots-clés :
Si vous pouvez obtenir il, essayez d'examiner l'arborescence DOM. Le sélénium le fait aussi partie de l'essai d'une page. Il a aussi des fonctions pour cliquer sur des boutons et de suivre les liens, ce qui peut être utile.
get_html_source()
fonction, mais il renvoie la source normale, pas la générées (post-AJAX) de la source. Si vous savez comment accéder à la source généré, dites-le nous.Le meilleur moyen de gratter des pages web à l'aide d'Ajax ou en général les pages à l'aide de Javascript est avec un navigateur lui-même ou un headless browser (navigateur sans interface graphique). Actuellement phantomjs est un bien promu navigateur sans l'aide de WebKit. Une alternative que j'ai utilisé avec succès est Interface htmlunit (en Java ou en .NET via IKVM, qui est une simulation de navigateur. Une autre alternative est l'utilisation d'un web outil d'automatisation comme Le sélénium.
J'ai écrit de nombreux articles sur ce sujet, comme web grattage Ajax et Javascript des sites et automatisé browserless l'authentification OAuth de Twitter. À la fin du premier article, il y a beaucoup de ressources supplémentaires que j'ai été la compilation depuis 2011.
Dépend de la page ajax. La première partie de la capture d'écran est de déterminer comment la page fonctionne. Est-il une sorte de variable que vous pouvez parcourir à demander toutes les données de la page? Personnellement, j'ai utilisé Web Grattoir Plus pour beaucoup de capture d'écran des tâches liées à la parce que c'est pas cher, pas difficile à obtenir commencé, les non-programmeurs peuvent le faire assez rapidement.
Note de côté: Conditions d'Utilisation est probablement quelque part vous pourriez vouloir vérifier avant de le faire. Selon le site de l'itération à travers tout ce qui peut soulever un certain nombre de drapeaux.
J'aime PhearJS, mais qui peut-être en partie parce que je l'ai construit.
Cela dit, c'est un service que vous exécuter en arrière-plan qui parle HTTP(S) et rend les pages de JSON pour vous, y compris les métadonnées que vous pourriez avoir besoin.
Comme une solution à faible coût, vous pouvez également essayer SWExplorerAutomation (SWEA). Le programme crée une API d'automatisation pour toute application Web développée avec HTML, DHTML ou AJAX.
Je pense que Brian R. Bondy réponse est utile lorsque le code source est facile à lire. Je préfère une façon simple en utilisant des outils comme Wireshark ou HttpAnalyzer pour capturer le paquet et obtenir la url dans le champ "Hôte" et le "champ".
Par exemple,je capture un paquet comme suit:
Puis l'URL est :
Selenium WebDriver est une bonne solution: vous programme un navigateur et permet d'automatiser ce qui doit être fait dans le navigateur. Les navigateurs (Chrome, Firefox, etc) fournir leurs propres pilotes qui fonctionnent avec le Sélénium. Car elle fonctionne comme un système automatisé de VRAI navigateur, les pages (y compris le code javascript et Ajax) chargés comme ils le font avec un homme à l'aide de ce navigateur.
L'inconvénient est qu'il est lent (car vous auriez probablement comme d'attendre que toutes les images et les scripts à charger avant de faire votre grattage sur cette seule page).
J'ai déjà lié à MIT du solvant et EnvJS que mes réponses à gratter pages Ajax. Ces projets semblent plus accessibles.
Par pure nécessité, j'ai inventé une autre façon de gratter pages Ajax, et il a travaillé pour les gros sites comme findthecompany qui ont des méthodes pour trouver headless moteurs javascript et ne montrent pas de données.
La technique est d'utiliser les extensions de chrome à faire de grattage. Les extensions de Chrome sont le meilleur endroit pour gratter pages Ajax parce qu'ils nous permettent l'accès à javascript modifié DOM. La technique est la suivante, je vais certainement en open source le code de temps en temps. Créer une extension chrome ( en supposant que vous savez comment créer une, et de son architecture et de ses capacités. C'est facile d'apprendre et de pratiquer comme il ya beaucoup d'échantillons),
S'il vous plaît commentaire si vous ne pouvez pas comprendre et je peux l'écrire mieux. ( première tentative ). Aussi, je suis en train de libérer un exemple de code dès que possible.