Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

madjan06

Treue Seele

  • »madjan06« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Kassel

Beruf: Azubi Fachinformatiker Anwendungsentwicklung

  • Private Nachricht senden

1

15.09.2010, 15:45

Daten einer Website auslesen mit C#

Guten Tag,

da ich derzeit krank geschrieben bin und etwas Langeweile habe, beschäftige ich mich gerade mit einem Problem, welches ich an der Arbeit bei einem Projekt habe. Ich soll ein Tool erstellen, welches Daten von bestimmten Websites ausließt und speichern soll, das klappt soweit auch ganz gut mit einer Website. Da das ganze aber dynamisch sein soll, soll es die Daten auch von verschiedenen Homepages auslesen können. Mein Problem ist jetzt das die meisten Website aus asp und java bestehen und der Quellltext nicht immer Auskunft gib, was da wie aufgerufen wird.

Da dort im Quelltext nichts über die Funktion steht, die aufgerufen wird, wenn ich auf find dealer klicke, habe ich ein Problem^^

Meine Frage wäre damit also, wie stelle ich es an die Eingabefelder automatisch zu füllen und dann den buttonclick zu simulieren und mir möglichst alle Händler in meinem Programm ausgeben zulassen. Ein paar Denkanstöße wären super, saß da letzte Woche schon gut 2 Tage dran und eben heute. Asp und Java machens einem da nicht leicht, was ja auch so sein soll^^

Hoffe das irgendwer ne Idee hat und das ich in dem richtigen Subforum bin.

Mfg

madjan
Mein Monto:
Nimm das Leben so wie es kommt^^

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »madjan06« (19.10.2010, 22:40)


2

15.09.2010, 16:00

Die Daten werden in deinem Beispiel mit jquery geliefert. Evt. kannst du einfach direkt auf den webservice zugreifen... Ich glaube kaum, dass es möglich ist sowas generisch abzugrasen. Du könntest versuchen einen automatisierbaren Browser zu bauen/erweitern, der auch "Zwischenstände" von Seiten ausgeben kann.

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

3

15.09.2010, 16:05

Ich möchte zuerst anmerken, dass es eventuell illegal sein könnte was du vor hast. Dazu müsstest du vermutlich die Nutzungsrichtlinien von Yamaha lesen.

Und zuvor: Das was du dort an Quelltext siehst ist HTML, kein ASP und Javascript, kein Java.

Die Daten werden Asynchron per Javascript vom Server angefordert und im JSON Format ausgegeben. Der einfachste Weg das genauer einzusehen ist per Resource Tracking in Firebug oder den Developer Tools vom Internet Explorer oder Google Chrome.

Dort kannst du sehen welche Anfragen die Webseite an den Server sendet und was der Server antwortet. Darin werden alle Informationen bezüglich der Dealer übertragen. Mit etwas experimentieren kannst du dann denke ich herausfinden welche Anfragen du an den Server senden musst um die gewünschten Informationen zu erhalten.

Das ganze generisch für verschiedene Seiten zu lösen ist praktisch unmöglich. Du wirst das auslesen für jede Seite anpassen müssen und insbesondere bei jeder Änderung der Seite wieder.

Jedoch ist dafür durchaus etwas Erfahrung im Umgang mit Webtechnolgie (HTTP, Javascript, AJAX, HTML) erforderlich, daher wird das denke ich kein sehr einfaches Vorhaben.

madjan06

Treue Seele

  • »madjan06« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Kassel

Beruf: Azubi Fachinformatiker Anwendungsentwicklung

  • Private Nachricht senden

4

15.09.2010, 16:10

@chromanoid

ähm, hast du dazu vielleicht noch nen paar Infos bzw. weist du ob es ein Programm gibt welches mir die Zwischenstände von websites ausgibt??, nur damit ich mir mal angucken kann wie so etwas abläuft^^
Aufjedenfall danke für den Tipp mit dem jquery, hab die java script dateien total übersehen vielleicht enthalten die was brauchbares, was man umschreiben kann^^

@ xardias

Das, das eventuell illegal ist, hab ich auch schon bei meinem Tutor angemerkert, aber es erleichtert die arbeit eben ungemein, als 1000 händler manuell zu suchen, bin da auch nicht ganz mit einverstanden :S , werd mir deinen tipp aber mal angucken^^
Mein Monto:
Nimm das Leben so wie es kommt^^

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »madjan06« (15.09.2010, 16:20)


hanse

Alter Hase

Beiträge: 472

Wohnort: Wien

  • Private Nachricht senden

5

15.09.2010, 20:01

Ich hab kurz mal drüber geschaut und wenn Yamaha Motoräder baut, wie sie Webseiten Bauen dann wirds wohl noch n paar Verkehrstote mehr geben...

6

15.09.2010, 20:14

Naja mit "C# Browser Automation" solltest du einiges bei Google finden. Hab da jetzt keine besonderen Erfahrungen. Allerdings würde ich eher versuchen an den webservice zu kommen. Schau dir mal an wie jquery funktioniert. Um Quelltext von Webseiten zu untersuchen, würde ich alles außer IE nehmen. U.a. Chrome oder Firefox erkennen Verweise auf Dateien innerhalb vom Seitenquelltext (im Quelltext-Viewer). Man kann sich so ganz einfach ohne Aufwand durch die JS-Dateien klicken.

Evt. könntest du auch was zum Thema bei Browsergame-Hacking finden. Die haben wohl mit ähnlichen Problemen zu kämpfen.

Wenn das ganze nicht illegal passieren soll, solltest du oder dein Tutor sowieso mal bei Yamaha anfragen - vielleicht geben sie dir die Daten für den Webservice...

nonamedewd

Frischling

Beiträge: 6

Wohnort: Wildau

Beruf: Analyst

  • Private Nachricht senden

7

16.09.2010, 14:45

was du bauen möchtest klingt für mich ganz klassisch nach einem crawler.

um beim crawlen dynamisch zu sein, solltest du XPath einbinden.

der ablauf wäre folgendermaßen:


1. URL dem Html Parser übergeben
2. Parser wandelt das Dokument in ein kompatibles XML Dokument um.
3. mit XPath einen bestimmten Bereich des XML-Dokuments absuchen... Bsp. Forumbeitrag ( descendant::div[@id="forumpost"] )
4. Rückgabe in eine List, Array speichern
5. Daten eventuell über Regular Expressions säubern
5. Daten in eine Datenbank, Datei schreiben.

wenn du die ergebnisse von einem Suchterm haben möchtest, müsstest du als URL z.b. folgendes dem Parser übergeben ( http://twitter.com/search#search?q=peter )

Es gibt viele OpenSource HTML Parser. Für C# wäre HtmlAgility geeignet.


wenn das nicht das sein sollte was du möchtest, hoffe ich, dass es dir wenigstens ansatzweise helfen kann. have fun

madjan06

Treue Seele

  • »madjan06« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Kassel

Beruf: Azubi Fachinformatiker Anwendungsentwicklung

  • Private Nachricht senden

8

16.09.2010, 15:51

nur als kleine anmerkung muss das ganze selbst mit c# hinkriegen, es soll möglicht so gestaltet sein das der enduser, auch ohne zusätzliche programme auskommt^^

werd das ganze jetzt mit der browser automation versuchen, is wahrscheinlich für java, asp und co. am einfachsten^^

@ nonamedewd, das auch nen gute ansatz, nur funktioniert ja soweit ich sehe nur bei puren html seiten oder lieg ich da falsch ^^

ich danke aufjedenfall mal für die ansätze, werd das ganze dann nochmal mit meinem tutor besprechen, wie wir da nun am besten vorgehen^^
Mein Monto:
Nimm das Leben so wie es kommt^^

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »madjan06« (16.09.2010, 16:00)


xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

9

16.09.2010, 17:51

werd das ganze jetzt mit der browser automation versuchen, is wahrscheinlich für java, asp und co. am einfachsten^^

Das ganze hat immer noch kein bisschen mit Java und ASP zu tun. Du hast ganz normale dynamische HTML Seiten.

madjan06

Treue Seele

  • »madjan06« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Kassel

Beruf: Azubi Fachinformatiker Anwendungsentwicklung

  • Private Nachricht senden

10

16.09.2010, 19:05

@ xardias, die daten werden doch aber wohl per java-script ausgelesen oder liege ich da falsch??
Mein Monto:
Nimm das Leben so wie es kommt^^

Werbeanzeige