2010-07-15 5 views
2

J'ai une idée pour une application qui m'aiderait vraiment au travail mais je ne suis pas sûr que ce soit possible.Obtenir des données d'une page Web

Je veux exécuter une application de bureau C# qui demandera une valeur. Quand une valeur est fournie, l'application ouvre un navigateur, va à une page Web et ajoute la valeur dans un formulaire sur un site Web en ligne. Le formulaire est ensuite soumis et une nouvelle page contenant un tableau de résultats est chargée. Je veux ensuite extraire la table des résultats de la source de la page et écrire du code pour analyser les valeurs de résultat.

Il n'est pas important que l'utilisateur voit cela se produire dans un navigateur réel. En d'autres termes, s'il y a un moyen de le faire en lisant les requêtes HTTP, c'est génial.

Le plus gros problème que j'ai est d'obtenir les valeurs dans le formulaire, puis de récupérer la source de la page après le formulaire est soumis et la page suivante se charge.

Toute aide vraiment appréciée.

Merci

+0

Contrôlez-vous le site Web ou êtes-vous en train d'extraire des données du site de quelqu'un d'autre? –

+0

Le site est un frontal pour les données sur l'un de nos serveurs en cours d'exécution bien que nous ne soyons pas autorisés à accéder directement pour une raison ou une autre. Tout doit passer par le web – user392810

Répondre

1

Ceci est certainement possible et vous n'avez pas besoin d'utiliser un navigateur Web réelle pour cela. Vous pouvez simplement utiliser un System.Net.WebClient pour envoyer votre requête HTTP et obtenir une réponse HTTP.

Je suggère d'utiliser wireshark (ou vous pouvez utiliser Firefox + Firebug) il vous permet de voir les requêtes HTTP et les réponses. En regardant le trafic HTTP, vous pouvez voir exactement comment vous devez passer votre requête HTTP et quels paramètres vous devriez définir.

+0

Pour voir les demandes et les réponses, Firefox + Firebug combo est, je crois, plus facile. – Amadan

+0

@Amadan: Merci d'avoir ajouté votre suggestion. –

0

Vous n'avez pas besoin d'impliquer le navigateur avec ceci. WebClient devrait faire tout ce dont vous avez besoin. Vous aurez besoin de voir ce qui est en train d'être posté lorsque vous soumettez le formulaire avec le navigateur, et ensuite vous devriez être capable de faire une requête POST en utilisant WebClient et récupérer la page résultante sous forme de chaîne.

Les documents pour le WebClient constructor en sont un bon exemple.

1

Pourvu que vous n'utilisez ce dans un contexte juridique:

Habituellement, les formulaires web sont envoyés via une requête POST au serveur Web, en particulier un script qu'il gère. Vous pouvez regarder le code HTML de la page du formulaire et trouver la destination du formulaire (action du formulaire).

Vous pouvez ensuite utiliser un HttpWebRequest en C# pour "prétendre que vous êtes le formulaire", en envoyant une requête POST avec tous les paramètres requis (en les ajoutant à l'en-tête HTTP). En conséquence, vous obtiendrez le code source de la page de destination tel qu'il sera envoyé au navigateur. Vous pouvez analyser ceci.

0

Voir par ex. this question pour certains pointeurs sur au moins le côté de récupération de données. Vous allez en savoir beaucoup plus sur le http protocol avant d'en avoir fini avec ce ...

0

Pourquoi le feriez-vous via des pages Web si vous ne voulez même pas que l'utilisateur fasse quoi que ce soit? Les pages Web sont purement pour l'interaction avec les utilisateurs, si vous voulez simplement le transfert de données, utilisez WCF. @Brian en utilisant Wireshark se traduira par un gestionnaire de réseau très en colère, assurez-vous que vous êtes réellement autorisé à l'utiliser.

Questions connexes