Patterns and practices for Web Scraping in .Net (C #) [fermé]

9

Je vais mettre sur pied une application pour automatiser un site Web / une application externe. Dans certains cas, je devrai naviguer sur le site comme le ferait un utilisateur (certains liens que je dois suivre ne peuvent pas être prévus et doivent être analysés à partir d'une réponse)

J'utilise déjà Html Agility Pack , et je suis au courant de Tidy si cela est nécessaire.

Y a-t-il d'autres technologies dont je devrais être au courant?

Existe-t-il des modèles recommandés pour pouvoir s'adapter rapidement en cas de changement de l'application Web externe? J'envisage d'encapsuler la validation des réponses comme un certain type de stratégie ou un modèle similaire qui peut être facilement séparé / branché si nécessaire, mais toute suggestion spécifique serait excellente.

jlnorsworthy
la source
À ce sujet, un guide étape par étape ou Mise en route - Démarrage rapide qui peut être terminé en 15-20 minutes? Je vous donne un bon exemple de guide étape par étape comme berniecook.wordpress.com/2013/01/13/… Je voulais rapidement couvrir plusieurs hypothèses avant de commencer: installer (requis, outils requis), configurer, un courir rapidement. La cible sera un échantillon «prêt et prêt». Peut-être mieux un véritable exemple d'application.
Kiquenet

Réponses:

4

Si vous cherchez à automatiser la navigation d'un site Web externe comme le ferait un utilisateur, Watin est parfait pour cela. Il pilotera un navigateur Web via un modèle d'objet et dispose d'un large éventail de capacités d'analyse basées sur le DOM (ainsi que des capacités non DOM que vous trouverez dans un navigateur, y compris des scripts).

Voici un lien:

Watin.org

dreadwail
la source
Watin est comme votre bibliothèque JavaScript préférée pour C #.
The Muffin Man
Une solution finale avec un exemple d'application de code source complet ? À
mon humble avis
0

Si vous recherchez la possibilité d' apporter rapidement des modifications pour suivre celles-ci dans l'application Web externe, je regarderais les scripts. Si C # est votre langue de choix, regardez la compilation de code à la volée. Si vous utilisez une base de données, le code du script peut y être stocké, sinon, les fichiers en texte brut fonctionneraient également.

En ce qui concerne les modèles GoF, la stratégie est le choix des manuels.

L'autre "modèle" à considérer, d'autant plus que vous avez mentionné la validation des réponses en les utilisant pour sélectionner l'action suivante, est une machine à états finis . Par exemple, les états d'un client de messagerie Web peuvent être "non connecté", "dans la boîte de réception", "lecture du message", "modification de la réponse", etc. Vous exécuteriez une action en fonction de l'état, puis en fonction de la réponse, sélectionnez l'état suivant.

Croustillant
la source
0

Le modèle devrait vraiment provenir du problème, mais voici quelques choix:

Si vous êtes principalement concerné par les coûts / ennuis de développement en cours: modèle de stratégie (déjà mentionné) - utilisez-le pour implémenter les interfaces au niveau des composants et utilisez une méthodologie de liaison dynamique pour résoudre des stratégies spécifiques (implémentations). Un conteneur IOC (j'aime Autofac ces jours-ci) fonctionnerait bien.

Si vous avez besoin de prendre en charge les éléments ci-dessus, vous devez également évoluer: Map Reduce (quelqu'un connaît-il un bon m + r fx pour .net?).

sbrenton
la source
-1

Selon la façon dont la page Web change, cela peut être difficile. Vous pouvez conserver une liste d'expressions régulières standard dans une base de données, puis lorsque l'une ne fonctionne plus, vous pouvez parcourir l'ensemble de base avec d'autres jusqu'à ce que vous en frappiez une. Ensuite, vous souhaitez marquer cela pour une utilisation future.

Josh O'Bryan
la source