Je voudrais créer un programme qui entrera une chaîne dans la zone de texte sur un site comme Google (sans utiliser leur API publique), puis soumettez le formulaire et saisissez les résultats. Est-ce possible? Saisir les résultats nécessitera l'utilisation de la grattage HTML que je suppose, mais comment puis-je entrer des données dans le champ de texte et soumettre le formulaire? Serais-je obligé d'utiliser une API publique? Est quelque chose comme ça juste pas faisable? Devrais-je comprendre des chaînes / paramètres de requête? p>
merci p>
5 Réponses :
La plupart du temps, vous pouvez simplement envoyer une simple demande de post HTTP. P>
Je vous suggère d'essayer de jouer avec Fiddler pour comprendre comment fonctionne le Web. < / p>
Presque toutes les langues et framework de programmation sont des méthodes d'envoi de demandes brutes. P>
Et vous pouvez toujours programmer contre Internet Explorer ActiveX Control. Je crois que de nombreuses langues de programmation le soutiennent. P>
Eh bien, voici le HTML de la page Google:
http://www.google.com/search?hl=en&q=Stack+Overflow
Je pense que cela mettrait une violation juridique des conditions d'utilisation (consulter un avocat à ce sujet: les programmeurs ne sont pas bons pour donner des conseils juridiques!), mais, techniquement, vous pouvez rechercher FOOBAR en visitant simplement l'URL http://www.google.com/search?q=foobar et, comme vous le dites, gratter le HTML résultant. Vous aurez probablement également besoin de simuler l'en-tête HTTP CODE> Agent CODE> et peut-être d'autres. P>
Il existe peut-être des moteurs de recherche dont les conditions d'utilisation ne l'interdisent pas; Vous et votre avocat pourriez-vous être bien conseillé de regarder autour de vous pour voir si c'est bien le cas. P>
Si vous téléchargez Cygwin et ajoutez Cygwin \ Bin à votre chemin, vous pouvez utiliser Curl pour récupérer une page et Grep / SED / Quels que soient les résultats. Pourquoi remplir le formulaire lorsque vous pouvez utiliser Google des paramètres de QueryString, de toute façon? Avec CURL, vous pouvez aussi poster des informations, définissez Informations sur l'en-tête, etc. Je l'utilise pour appeler des services Web à partir d'une ligne de commande. P>
Ce que je ferais est de créer un petit programme qui peut soumettre automatiquement des données de formulaire à n'importe quel endroit et revenir avec les résultats. Ceci est facile à faire en Java avec httpunit . La tâche va comme ceci: p> La solution que vous choisissez dépendra de divers facteurs, notamment: p> Par exemple, vous pouvez essayer les applications suivantes pour soumettre les données pour vous: p> puis Grep (awk ou SED) la page Web résultante ( s). P> Une autre astuce Lorsque l'écran raclage est de télécharger un exemple de fichier HTML et d'analyser manuellement dans VI (ou VIM). Enregistrez les touches de frappe dans un fichier, puis chaque fois que vous exécutez la requête, appliquez ces frappes à la ou les pages Web résultantes pour extraire les données. Cette solution n'est pas maintenue, ni 100% fiable (mais la gratte à l'écran d'un site Web est rarement). Cela fonctionne et est rapide. P> Exemple strong> P> Une classe Java semi-générique pour soumettre des formulaires de site Web (spécialement concevant la journalisation dans un site Web) est ci-dessous, dans l'espoir que cela pourrait être utile. Ne l'utilisez pas pour le mal. P>
java -cp $CLASSPATH FormElements com.mellon.properties "John" "Doe" "John.Doe@gmail.com" "To whom it may concern ..."