Muster und Vorgehensweisen für das Web-Scraping in .Net (C #) [geschlossen]


9

Ich werde eine Anwendung zusammenstellen, um eine externe Website / Anwendung zu automatisieren. In einigen Fällen muss ich wie ein Benutzer auf der Website navigieren (einige Links, denen ich folgen muss, können nicht vorhergesagt werden und müssen aus einer Antwort analysiert werden).

Ich verwende bereits das Html Agility Pack und bin mir Tidy bewusst, wenn dies erforderlich ist.

Gibt es andere Technologien, die ich kennen sollte?

Gibt es empfohlene Muster, um sich schnell anpassen zu können, falls sich die externe Web-App ändert? Ich stelle mir vor, die Validierung von Antworten als eine Art Strategie oder ein ähnliches Muster zu kapseln, das bei Bedarf leicht getrennt / eingesteckt werden kann, aber spezifische Vorschläge wären großartig.


Eine Schritt-für-Schritt-Anleitung oder Erste Schritte - Schnellstart, die in 15 bis 20 Minuten abgeschlossen werden können? Ich erhalte ein gutes Beispiel für eine Schritt-für-Schritt-Anleitung wie berniecook.wordpress.com/2013/01/13/… Ich wollte kurz einige Annahmen abdecken, bevor wir beginnen: installieren (Voraussetzungen, Tools erforderlich), konfigurieren, an schnell laufen. Ziel ist ein "Go and Ready" -Proben. Vielleicht besser ein echtes Anwendungsbeispiel.
Kiquenet

Antworten:


4

Wenn Sie die Navigation einer externen Website wie ein Benutzer automatisieren möchten, ist Watin genau das Richtige für Sie. Es steuert einen Webbrowser durch ein Objektmodell und verfügt über eine breite Palette von Analysefunktionen, die auf dem DOM basieren (sowie Nicht-DOM-Funktionen, die Sie in einem Browser finden würden, einschließlich Skripten).

Hier ist ein Link:

Watin.org


Watin ist wie Ihre Lieblings-JavaScript-Bibliothek für C #.
Der Muffin-Mann

Gibt es eine endgültige Lösung mit einer vollständigen Quellcode- Beispielanwendung? IMHO, bessere Beispiele für die Minimierung der Lernkurve sind echte Anwendungen mit vollständigem Quellcode und guten Mustern und Praktiken
Kiquenet

0

Wenn Sie nach der Möglichkeit suchen, schnell Änderungen vorzunehmen, um diese in der externen Web-App zu verfolgen, dann würde ich mir die Skripterstellung ansehen. Wenn C # Ihre bevorzugte Sprache ist, sehen Sie sich das schnelle Kompilieren von Code an. Wenn Sie eine Datenbank verwenden, kann der Skriptcode dort gespeichert werden, andernfalls funktionieren auch Nur-Text-Dateien.

In Bezug auf GoF-Muster ist Strategie die Wahl des Lehrbuchs.

Das andere zu berücksichtigende "Muster", insbesondere da Sie die Validierung von Antworten zur Auswahl der nächsten Aktion erwähnt haben, ist eine Maschine mit endlichem Zustand . Beispielsweise könnten die Status für einen Webmail-Client "nicht angemeldet", "im Posteingang", "Nachricht lesen", "Antwort bearbeiten" usw. sein. Sie würden je nach Status eine Aktion ausführen und dann basierend auf Wählen Sie in der Antwort den nächsten Status aus.


0

Das Muster sollte eigentlich aus dem Problem stammen, aber hier sind einige Möglichkeiten:

Wenn Sie sich hauptsächlich mit laufenden Entwicklungskosten / Ärger befassen: Strategiemuster (bereits erwähnt) - Verwenden Sie dieses, um die Schnittstellen auf Komponentenebene zu implementieren, und verwenden Sie eine dynamische Bindungsmethode, um bestimmte Strategien (Implementierungen) aufzulösen. Ein IOC-Container (ich mag Autofac heutzutage) würde gut funktionieren.

Wenn Sie das oben genannte Plus unterstützen müssen, müssen Sie skalieren: Map Reduce (kennt jemand einen guten m + r fx für .net?).


-1

Je nachdem, wie stark sich die Webseite ändert, kann dies schwierig sein. Sie können eine Liste der regulären Standardausdrücke in einer Datenbank aufbewahren. Wenn einer nicht mehr funktioniert, können Sie den Basissatz mit anderen durchlaufen, bis Sie einen treffen. Dann möchten Sie dies für die zukünftige Verwendung markieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.