Autor Beitrag
Bordon
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 25.08.14 19:39 
Hallo zusammen,
ich möchte von folgender Website

www.bsi.bund.de/DE/T...t/baust/b01/b01.html

die Daten auslesen und ein bestimmter Bereich will ich dann in String Variablen speichern. Dabei handelt es sich um die Bereiche:
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
....
<p><a class="RichTextIntLink Basepage" href="https://www.bsi.bund.de/DE/Themen/ITGrundschutz/ITGrundschutzKataloge/Inhalt/_content/baust/b01/b01000.html" title="B 1.0 Sicherheitsmanagement">B 1.0 Sicherheitsmanagement</a></p>


<p><a class="RichTextIntLink Basepage" href="https://www.bsi.bund.de/DE/Themen/ITGrundschutz/ITGrundschutzKataloge/Inhalt/_content/baust/b01/b01001.html" title="B 1.1 Organisation">B 1.1 Organisation</a></p>

...

ich möchte aus diesen Zeilen die Teile die in title="..." (also B 1.0 Sicherheitsmanagement, B 1.1 Organisation...) in einem string-Feld abspeichern.
Nun habe ich schon ein wenig mit StreamReader experimentiert, jedoch noch auf kein Ergebnis gekommen. Hab es auch schon hinbekommen die komplette htm-Seite in einen String zu schreiben.
Das wichtigste ist mir allerdings noch nicht gelungen!
Es sollte also so aussehen:
ausblenden C#-Quelltext
1:
2:
3:
string a[0] = "B 1.0 Sicherheitsmanagement";
string a[1] = "B 1.1 Organisation";
...

Kann mir hierzu jemand einen guten Tipp geben? Ich wäre Euch sehr dankbar.

Freundliche Grüße,
Bordon

Moderiert von user profile iconTh69: XML-Tags hinzugefügt
Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Schafschaf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 63
Erhaltene Danke: 2

Windows 10
C# (VS 2015)
BeitragVerfasst: Di 31.03.15 13:39 
Hallo,

da kann ich dir das HtmlAgilityPack empfehlen. Das gibt's im Nuget.
So wie ich das sehe, möchtest du von allem Links der Klassen "RichTextIntLink" und "Basepage" das Attribut "title" auslesen.


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
string url = "die url deiner seite"
HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
HtmlAgilityPack.HtmlDocument result = web.Load(url);
HtmlNode node = result.DocumentNode; 

var res = node.Descendants("a").Where(x => x.Attributes.Contains("class") && x.Attributes["class"].Value.Contains("RichTextIntLink") && x.Attributes["class"].Value.Contains("Basepage"));

foreach(Htmlnode n in res)
{
   hier kommst du mit n.InnerHtml an den inneren Text ran und kannst ihn in eine Liste oder Array schreiben, den musst du noch mit Substring etc. nach "title=" filtern.     
}



Ich hoffe dieser kleine Ansatz hat dir geholfen. Viel Spaß noch :)