On m’a confié la tâche d’écraser une de nos anciennes applications Web pour extraire certaines données du code. Les données sont formatées et “devraient” être affichées exactement les mêmes à chaque fois. Je ne sais tout simplement pas comment s’y prendre. C’est un fichier html complet avec des navigations d’en-tête et de pied de page, mais au milieu de tout cela se trouvent les données dont j’ai besoin.
Je dois extraire le nom de la société, le nom de la personne à contacter, le numéro de téléphone, l’adresse e-mail, etc.
Voici un exemple de ce à quoi le code ressemble:
...html above here
ABC INDUSTRIES
Contact Person : Joe Smith Phone Number : 555-555-5555 E-mail Address : [email protected] more...
Il y a plus de code à l’écran dans une structure de table différente que je dois également extraire.
- Comment jouer de la musique de fond en ligne dans Windows 8
- C #, bits et octets – Comment puis-je récupérer des valeurs de bits d’un octet?
- Silverlight 5 – Débogage du crash de npctrl.dll
- Élimination appropriée des objects COM Interop dans C #, en particulier dans les applications MS Office
- Quel est le meilleur moyen de renvoyer deux listes en C #?
- Comment passer plusieurs expressions à OrderBy for EF?
- Flux .NET, stream de stream entre objects, meilleures pratiques (C #)
- Xceed WPF propertyGrid Afficher l’élément pour la collection étendue
- Amazon S3 TransferUtility.Upload se bloque en C #
- Pourquoi n’est-il pas possible d’attraper MissingMethodException?
Êtes-vous simplement à la recherche de suggestions sur la manière de procéder? Le pack d’agilité HTML sera probablement votre meilleur choix pour l’parsing DOM en général. Il y a peut-être un peu de bricolage et d’essais et d’erreurs pour conserver votre écran (il en existe généralement pour ce genre de chose), mais cette bibliothèque est très bonne pour l’parsing HTML.
Techniquement, toute parsing XML (même LINQ to XML natif) devrait suffire, mais les sites Web ont la fâcheuse habitude de ne pas être bien formés, de sorte que vous risquez parfois de vous faire mal à la tête.
Dans des projets récents, j’ai utilisé avec succès WebRequest
et les WebRequest
associées pour télécharger le code HTML à partir d’une URL, puis l’parsingur syntaxique SgmlReader pour obtenir un access réel au contenu structuré.
Si les commentaires de page et le code de présentation de la table sont les mêmes à chaque appel, je tirerais la page dans une chaîne et utiliserais une série de fonctions .IndexOf et .Subssortingng pour parsingr les données. Utilisez la fonction IndexOf pour rechercher les index de début et de fin de chaque champ. Utilisez ces index de champ dans la fonction Sous-chaîne pour récupérer les données.
Ce n’est pas joli mais fait le travail.
HtmlDocument peut être utilisé pour traiter des documents HTML. Voir les exemples suivants:
http://weblogs.asp.net/grantbarrington/archive/2009/10/15/screen-scraping-in-c.aspx
Si le code HTML est stocké dans une chaîne, vous pouvez toujours utiliser des expressions régulières avec des groupes de capture pour parsingr les informations dont vous avez besoin.
- AutoFixture en tant que conteneur d’Automocking par rapport aux différences d’Automocking?
- Lien vers un contrôleur racine à partir d’un contrôleur de zone dans ASP MVC
- Filtrer une chaîne
- Vous recherchez l’implémentation d’arborescence de suffixe en C #?
- Roslyn Ajouter un document à un projet
- Unité testant une HttpApplication
- Injecter un tableau d’interfaces dans Ninject
- Tutoriel de prise UDP simple nécessaire
- WinForms – Quelle est l’approche la plus simple pour conserver certaines données?
- Surveillance d’une méthode synchrone pour le délai d’expiration