2010-12-10 4 views
1

Je dois écrire un code C# pour saisir le contenu d'une page Web. Les étapes ressemble suivantSaisir les détails de la page Web

  1. Parcourir pour connexion Page
  2. Je nom d'utilisateur et un mot de passe, fournir programatically et connectez-vous
  3. Ensuite, vous êtes dans la page détail
  4. Vous devez obtenir des informations là, comme (prodcut Id, Des, etc.)
  5. doit ensuite cliquer (par code) sur Détail Voir
  6. Ensuite, vous pouvez obtenir le prix pour ce produit à partir de là.
  7. Maintenant, il est fait, nous pouvons donc écrire la ligne de détail dans le fichier texte comme celui-ci ... ABC Printer :: 225519 :: 285,00

S'il vous plaît aidez-moi à ce sujet, (Même VB Code .Net est ok, je peux le convertir en C#)

+0

Avez-vous vraiment besoin de * cliquer * à l'étape 5, ou suffit-il de récupérer l'URL de la nouvelle page et de la télécharger? – CodesInChaos

Répondre

1

La bibliothèque WatiN est probablement ce que vous voulez, alors. Fondamentalement, il contrôle un navigateur Web (support natif pour IE et Firefox, je crois, bien qu'ils puissent avoir ajouté plus depuis ma dernière utilisation) et fournit une syntaxe facile pour interagir par programmation avec les éléments de la page dans ce navigateur. Tout ce dont vous avez besoin sont les noms et/ou les identifiants de ces éléments, ou un moyen unique de les identifier sur la page.

+0

C'est une bibliothèque assez funky, belle trouvaille - mais je suppose que cela nécessiterait l'ouverture d'un navigateur. L'utilisation de classes intégrées à C# fournirait une méthode beaucoup plus transparente de récupération et de traitement des données. – Seidr

+0

Salut, oui, j'ai téléchargé cette bibliothèque. Joli. Merci de partager celui-là avec moi. Mais j'ai un petit problème, le site que je veux obtenir des données est d'avoir un "captcha" dans l'écran de connexion. Pouvons-nous gérer cela dans cette bibliothèque.C'est ok pour montrer le "captcha" et laisser l'utilisateur l'entrer sur l'interface utilisateur. Si vous avez un échantillon de code qui sera mieux. –

0

Vous devriez être capable d'y parvenir en utilisant deux classes en C#, HttpWebRequest (pour demander les pages Web) et peut-être XmlTextReader (pour analyser la réponse HTML/XML). Si vous ne souhaitez pas utiliser XmlTextReader, alors je vous conseille de regarder dans les expressions régulières, car elles sont extrêmement utiles pour extraire des informations à partir de grands corps de texte.

How to: Send Data Using the WebRequest Class

+0

(a) HTML n'est généralement pas XML; (b) [vous ne pouvez pas analyser HTML avec des expressions régulières] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) –

+0

Mais comment puis-je Achive .. Cliquant sur la fonctionnalité .. Pour la connexion, je dois cliquer sur un bouton. Et obtenir le prix d'un produit, je dois cliquer sur un lien et attendre pour saisir les données .. Je pense que dans cette approche, nous ne pouvons pas faire de telles choses, n'est-ce pas ... ?? –

+0

Bien que vous ne soyez peut-être pas en mesure d'analyser HTML avec RegEx, vous pouvez extraire avec lui des informations provenant de sections spécifiques d'une structure HTML connue. En ce qui concerne le 'clic', ceci est réalisé en créant vos propres requêtes POST/GET. Lorsque vous cliquez sur un bouton d'envoi, l'un de ces deux types de demandes est envoyé à la cible du formulaire. Vous devez simplement rechercher les données envoyées et recréer cette requête à l'aide de la classe WebRequest. – Seidr

1

Vous devriez être en mesure d'atteindre cet objectif en utilisant la classe WebRequest pour récupérer des pages et le HTML Agility Pack pour extraire des éléments de la source HTML.

+0

HTML Agility Pack, je vais devoir prendre note de cela. +1 pour la réponse – Seidr

1

Oui j'ai téléchargé cette bibliothèque. Joli.

Merci de l'avoir partagé avec moi. Mais j'ai un problème avec cette bibliothèque. Le site que je veux obtenir des données est d'avoir un "captcha" sur la page de connexion.

Je peux entrer cette valeur si cela peut montrer une image et attendre ma saisie.

Pouvons-nous obtenir cela à partir de cette bibliothèque, si vous aimeriez avoir un échantillon.

Questions connexes