Thema Datum  Von Nutzer Rating
Antwort
Rot HTML-Elemente gemäß Attribut-Wert selektieren
12.06.2013 14:41:13 Daniel
Solved

Ansicht des Beitrags:
Von:
Daniel
Datum:
12.06.2013 14:41:13
Views:
3568
Rating: Antwort:
 Nein
Thema:
HTML-Elemente gemäß Attribut-Wert selektieren
Hallo zusammen, 
 
Folgende Aufgabenstellung macht mir Probleme: 
 
Ich möchte HTML-Dokumente parsen und bestimmte Inhalte des Dokuments in jeweilige Zellen schreiben. Mein Tabellenblatt baut sich wie folgt auf: 
 
A1: URL des HTML-Dokuments (http://www.example.org) 
B1: Meta-Title (ausgelesen aus dem HTML-Dokument) 
C2: Meta-Description (ausgelesen aus dem HTML-Dokument) 
D2: Canonical-URL aus <link rel="canonical" href="www.example.org"> 
 
 
Die Meta-Description (und leicht abgewandelt auch den Title) bekomme ich mit folgendem Code problemlos ausgelesen: 
 
Public Function SeoDescription(uri As String) As String 

    Dim dummy As HTMLDocument, dok As IHTMLDocument2 
    On Error Resume Next 
    
    Set dummy = New HTMLDocument 
    Set dok = dummy.createDocumentFromUrl(uri, "") 
    Do While Not dok.readyState = "complete" 
        DoEvents 
    Loop 
    SeoDescription = dok.getElementsByTagName("meta").Item("Description").Content 
    dummy.Close: Set dummy = Nothing 
    dok.Close: Set dok = Nothing 

End Function 
Probleme bereitet mir jedoch das Auslesen der href-Angabe bei einem Canonical-Tag. Aufbau dessen ist: <link rel="canonical" href="www.example.org">. Die Position dieses Nodes kann im HTML natürlich überall im <head> sein und "link"-Tags gibt es meist zuhauff. 
 
Mit diesem Code zeigt mir die Zielzelle der Funktion zumindest an, dass er ein oder mehr Elemente des Typs "link" findet. Wenn ich hier noch .Item[0].href angebe, dann bekomme ich sogar den href des ersten <link>-Elements. Aber ich möchte den href-Wert eben nicht abhängig der Node-Zahl auslesen, sondern davon abhängig, dass das Attribut "rel" des Tags "Link" den Wert "Canonical" hat. 
 
Public Function SeoMetaCanonical(uri As String) As String 

    Dim dummy As HTMLDocument, dok As IHTMLDocument2 
    On Error Resume Next 
    
    Set dummy = New HTMLDocument 
    Set dok = dummy.createDocumentFromUrl(uri, "") 
    Do While Not dok.readyState = "complete" 
        DoEvents 
    Loop 
    SeoMetaCanonical = dok.getElementsByTagName("link") 
    dummy.Close: Set dummy = Nothing 
    dok.Close: Set dok = Nothing 

End Function 
Soetwas wie .Attributes.Rel("Canonical").href funktioniert leider nicht, da bleibt die Zelle weiß. 
 
Weiß hier vielleicht jemand Rat?  
 
Ich bedanke mich im Voraus für jede Mühe!
 
Beste Grüße, 
Daniel

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot HTML-Elemente gemäß Attribut-Wert selektieren
12.06.2013 14:41:13 Daniel
Solved