Laden...

[gelöst] Homepage Quelltext auslesen

Erstellt von garden vor 16 Jahren Letzter Beitrag vor 16 Jahren 7.274 Views
G
garden Themenstarter:in
28 Beiträge seit 2007
vor 16 Jahren
[gelöst] Homepage Quelltext auslesen

Guten Tag liebe Programmierer-Gemeinde

Ich will momentan mit einem kleinen Projekt beginnen allerdings fehlt mir die erleuchtende Idee für den Anfang...

Was ich machen will:

Die Produkt Dokumentationen von dieser Seite: http://www.bmc.com/info_center_support/overview/0,3252,19097_4736144,00.html
komplett auszulesen--> das heisst alle links --> alle unterlinks (Versionen) und alle PDF-Dateien...

Die Seite soll dann in einer offline Version vorliegen in der man die einzelnen Dokumentationen anschauen kann...

Mein eigentliches Problem ist nun allerdings, das ich den PageSource auslesen muss.

Habe lange in Google usw. gesucht allerdings bin ich auf keinen grünen Zweig gekommen desshalb dieser Thread...

kennt jemand vielleicht eine Funktion oder irgendetwas anderes, das mir weiterhelfen könnte?

Vielen Dank für die Aufmerksamkeit 🙂

mfg - garden

PS: ich will keine Lösungen nur einen kleinen Denkanstoss 🙂

PSS: hoffe hab das richtige Forum erwischt

F
171 Beiträge seit 2006
vor 16 Jahren

Hallo garden,

Denkanstoß:
An einer Linux oder Cygwinconsole: wget -r deineURL

Weitere Info zu wget siehe dein Meister Google oder manpages.

Gruß falangkinjau

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo garden,

==> HttpWebRequest

herbivore

5.941 Beiträge seit 2005
vor 16 Jahren

Hallo garden

Oder du benutzt den WebClient (ab .NET 2.0), der ist noch einfacher in der Anwendung und passt spezifisch auf deine Anforderung.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

G
garden Themenstarter:in
28 Beiträge seit 2007
vor 16 Jahren

Also vielen Dank für die Vielen Antworten
Hab mich ma n bisschen umgeschaut und hab mich für diesen Lösungsweg entschieden:


// einbinden von Net
using System.Net;

//dann nen Button

        private void button1_Click(object sender, EventArgs e)
        {
            WebClient c = new WebClient();
            
            byte[] response = c.DownloadData("http://www.google.de"); 
            //google.de nur als Beispiel

            test = Encoding.ASCII.GetString(response);

            richTextBox1.AppendText(test);
        }


Dann hab ich in er RichTextBox den kompletten Source 🙂

Also nochmals vielen Dank für die schnelle Hilfe

ihr werdet bestimmt noch von mir hören 🙂

mfg - garden

5.941 Beiträge seit 2005
vor 16 Jahren

Hallo Garden

Diesen Umweg brauchst du für normalen Text nicht.
Dafür gibts die DownloadString Methode.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

G
garden Themenstarter:in
28 Beiträge seit 2007
vor 16 Jahren

Sehr schön verkürzt das Ganze nochmals ein bisschen.

Kann mich gar nicht genug bedanken für die schnelle Hilfe 🙂

Weiss jemand vielleicht auf Anhieb ob es die Möglichkeit gibt das Ganze Linie für Linie auszulesen?
Oder ist das auch mit dem String möglich?

mfg - garden

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo garden,

vermutlich ist es am einfachsten, hier String.Split zu verwenden.

herbivore

G
garden Themenstarter:in
28 Beiträge seit 2007
vor 16 Jahren

jop klappt alles wunderbar.
(hätte allerdings selber das köpfchen anstrengen sollen 😦)

aber trotzdem, wie immer, dankeschön 🙂

zum letzten mal:

mfg - garden

G
garden Themenstarter:in
28 Beiträge seit 2007
vor 16 Jahren

nochmals hallo
tut mir leid wenn ich den Beitrag wieder hochpushe allerdings habe ich noch ein kleines Problem...

Wenn ich mein Programm das erste mal stelle kommt bei dem Befehl:


completeSource = mywebclient.DownloadString(URL);

Immer diese Fehlermeldung:

The remote server returned an error: (404) Not Found.

Wenn ich nun allerdings die URL in Firefox aufrufe, wird die Seite aufgebaut.
Nachdem ich die Seite in Firefox angeschaut habe funktioniert auch mein Programm fehlerlos 🙁

Edit: Wenn ich den Links als String übergebe funktioniert gar nichts, wenn ich den Links allerdings direkt übergebe funktionert es bestens... merkwürdig.

Ein Beispiellink wäre : http://www.bmc.com//support/hou_Support_ProdAllVersions/0,3646,19097_19695_131304_0,00.html

Weiss jemand wieso das passiert? Was mann machen könnte?

mfg - garden

L
770 Beiträge seit 2006
vor 16 Jahren

Hallo,

ich hab mich öfters schon mit so einem Thema auseinander gesetzt, da du ja an der umsetzung bist, möchte ich Fragen, ist das Legal?

Ich mein mir ist klar, dass alles was zum Download angeboten wird kein Problem ist, aber die sache mit den Inhalt einer Homepage? Verstößt man da nicht gegen einiges wenn die Seite geschützt ist?

lg Lion

G
garden Themenstarter:in
28 Beiträge seit 2007
vor 16 Jahren

Moin
Das sollte kein Problem sein, was ich will ist eine OfflineVersion der Support Homepage allerdings nicht einfach die komplette Homepage kopieren sondern eifach die einzelnen Links Produktbeschreibungen etc. herausnehmen und dann übersichtlich in einem Programm darstellen...

denke nicht das, das Probleme geben sollte.

Zu meinem Problem: konnte das Ganze jetzt noch ein bisschen weiter eingrenzen.
Einige Links funktionieren die anderen nicht.

Geht:
http://www.bmc.com/support/hou_Support_ProdAllVersions/0,3646,19097_19695_2002_0,00.html

Geht nicht:
http://www.bmc.com/support/hou_Support_ProdAllVersions/0,3646,19097_19695_8249_0,00.html

Habe keine Ahnung was das Problem ist 🙁

mfg - garden

3.825 Beiträge seit 2006
vor 16 Jahren

ist das Legal?

Na klar !

Ich mein mir ist klar, dass alles was zum Download angeboten wird kein Problem ist, aber die sache mit den Inhalt einer Homepage? Verstößt man da nicht gegen einiges wenn die Seite geschützt ist?

Wie geschützt ?

Ein Browser lädt die Seiten ja auch auf den eigenen Rechner, um sie dann anzuzeigen.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

L
770 Beiträge seit 2006
vor 16 Jahren

Ein Browser lädt die Seiten ja auch auf den eigenen Rechner, um sie dann anzuzeigen.

Das ist mir klar, aber ich hab öfters auf Seiten gesehen, dass eben das "kopieren zur offline" Verwendung nicht erlaubt sei, also eine Spiegelung der kompletten Homepage. Sind dann solche Hinweise nur zur Abschreckung? (wie sie mich abgeschreckt haben) oder gibts da rechtlich einen stabilen hintergrund? also nichts was man biegen kann bis zum geht nicht mehr.

lg

lg Lion

5.941 Beiträge seit 2005
vor 16 Jahren

Hallo garden

Original von garden
Edit: Wenn ich den Links als String übergebe funktioniert gar nichts, wenn ich den Links allerdings direkt übergebe funktionert es bestens... merkwürdig.

Was verstehst du unter "direkt übergebe"?

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

G
garden Themenstarter:in
28 Beiträge seit 2007
vor 16 Jahren

Hi

Edit: Okay tut mir leid, das ganze funktioniert doch nicht wie ich gesagt habe:


/*
Direkt übergeben heisst für mich:

completeSource = mywebclient.DownloadString("http://www.bmc.com/support/hou_Support_ProdAllVersions/0,3646,19097_19695_151545_0,00.html");
anstatt:

completeSource = mywebclient.DownloadString(URL);

sollte ja eigentlich keinen Unterschied machen, macht es aber :(


Sind, wie ich jetzt herausgefunden habe immer die selben Links die nicht funktionieren.

[URL]http://www.bmc.com/support/hou_Support_ProdAllVersions/0,3646,19097_19695_151545_0,00.html[/URL]

ist der 1. der nicht funktioniert
\*/

mfg - garden

G
garden Themenstarter:in
28 Beiträge seit 2007
vor 16 Jahren

bin am verzweifeln, das Problem lässt sich einfach nicht aufdecken...

hab hier einmal alle Programme und deren Unterversionen aufgeliestet die Fehler auswerfen:

http://www.serta-net.ch/Fehlermeldungen/

Es sind immer die jeweiligen Programmme und darunter stehen die Links zu den einzelnen Versionen (nur die die Fehler ausgeben)

das merkwürdige ist das Programme die nicht gehen nur eine Version besitzen o.O

hoffe jemand hat eine Idee 🙁

mfg - garden

G
garden Themenstarter:in
28 Beiträge seit 2007
vor 16 Jahren

Tut mir leid für den TriplePost 🙁

Aber :

Bin mir jetzt eigentlich recht sicher das es damit zusammenhängt das die Server von bmc.com sehr langsam sind und der WebClient timeoutet.
Der Webclient hat ja glaube ich keine Möglichkeiten das Zeitlimit aus-, bzw hochzustellen desshalb

Habe ich probiert auf HttpWebRequest und HttpWebResponse auszuweichen da diese ja, wie ich gelesen habe, mehr Einstellungmöglichkeiten haben.

Bin jetzt schon eine Weile am tüfteln und ausprobieren allerdings will es eifach nicht funktionieren...

Sollte dieser Code nicht dazu führen das, das Timeout hochgestellt wird?

            HttpWebRequest HttpWReq = (HttpWebRequest)WebRequest.Create(URL);
            HttpWReq.Timeout = 999999999;

Weiss jemand vielleicht auf anhieb was mir weiterhelfen könnte?

EDIT: sehr peinlich... habs rausgefunden....
Hab viel zu weit geschaut, alles unnötig kompliziert gemacht.

Lösung des ganzen

completeSource = mywebclient.DownloadString(URL.ToLower());

einfach die komplette URL klein machen...

na ja einige stunden verplämpert aber habs ja jetzt

Vielen Dank für alles 😁

mfg - garden