Clever-Excel-Forum

Normale Version: Import von Wikipedia-Autoren-Link-Liste in Excel-Tabelle
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Was trinkt Ihr? :15:

Ihr seid super. :18:

Vielen Dank an Günter, an Zwenn und an Fennek. Das sind zwei sehr elegante Lösungen von Zwenn und Fennek.

Hättet Ihr noch eine Lösung dafür, nur die IPs aus der Userliste zu kopieren? Quasi abzuschreiben?
 
Vielen Dank auch an Benutzer „snb“. Habe Deinen Beitrag gerade gesehen, aber noch nicht ausführen können. Mir brummt derzeit die Rübe…
 
LG
Hallo zusammen

@Fennek
Alles gut, ich habe gar nix persönlich genommen in irgend einer negativen Weise  :)

@snb
Kann man so machen, ist dann aber (mit Verlaub) scheiße Angel
  • Warum sollte man sich die Arbeit machen die Seite vor jedem Abgleich manuell zu speichern Huh 
  • Umlaute werden bei Deiner Lösung durch "den üblichen Kuddelmuddel" ersetzt -> Was da an Links rauskommt ist nicht brauchbar [Edit: Stimmt nicht. Die Links werden mit den %-Zeichen für URLs aufgebaut und funktionieren. Die Namen werden aber falsch dargestellt]
  • Bei IP6 Adressen wirds ganz gruselig (sofern ich das richtig zugeordnet habe) [Edit: Habe ich nicht, weil die sind ja nicht User: sondern Special:Contributions. Aber irgendwo kam was ganz unleserliches raus. Edit 2: Habs gefunden. Der Username לערי ריינהארט wird unleserlich ausgegeben]
  • Auch Du liest "nur" die User: aus (Was sich allerdings leicht beheben lässt)
  • Dein Code setzt keine Links in die Excel Tabelle, sondern nur Strings
Nix desto trotz finde ich es immer gut auch andere Lösungsansätze zu sehen  :) Zumal Dein Code echt schnell ist :28:

Viele Grüße,

Zwenn
@Zwenn

zum Testen mache ich das lokale Abspeichern auch, sofern man im UTF-8 Format speichert, geht das auch mit den Umauten.

Für "MSXML2.HTTP" ist es egal, ob man aus dem Web oder einer lokalen Text-Datei lädt.

so liest PS auch die IP's aus, bei IPv4 sieht es gut aus, bei IPv6 teilweise sehr merkwürdig:

Code:
$url = 'https://xtools.wmflabs.org/articleinfo/de.wikipedia.org/Kunst//2019-02-28?editorlimit=200'

$ret = iwr $url -DisableKeepAlive -UserAgent "Clever-Excel"

foreach ($lk in $ret.links) {
    if ($lk.href.Contains('User:') -or $lk.href.contains('Special:Contributions')) { $lk.href }
}

Die Liste spare ich mir und dem Forum.
Hallo zusammen

@Fennek
Stimmt auffallend, was Du über UTF8 und MSXML2.HTTP schreibst  :)

@Teamplayer
Ehrlich gesagt weiß ich nicht genau was Du meinst. Aber um nur die IP Adressen auszuzlesen kannst Du folgendes verwenden (inklusive IP6 Wink ) In Spalte 5 werden die Links generiert, in Spalte 4 werden die IP Adressen als Zeichenketten eingetragen:

Code:
Sub WikiIPsAuslesen()

Dim browser As Object
Dim url As String
Dim knotenUserTabelle As Object
Dim knotenAlleUser As Object
Dim knotenEinUser As Object
Dim userLink As String
Dim zeile As Long
Dim spalte As Long

  zeile = 2
  spalte = 5
 
  'Parameter editorlimit auf 2000 damit alle User direkt in einer Tabelle aufgelistet werden
  url = "https://xtools.wmflabs.org/articleinfo/de.wikipedia.org/Kunst//2019-02-28?editorlimit=2000"
 
  'Internet Explorer initialisieren, Sichtbarkeit festlegen,
  'URL aufrufen und warten bis Seite vollständig geladen wurde
  Set browser = CreateObject("internetexplorer.application")
  browser.Visible = False
  browser.navigate url
  Do Until browser.ReadyState = 4: DoEvents: Loop
 
  'UserTabelle holen
  Set knotenUserTabelle = browser.document.getElementsByClassName("table table-bordered table-hover table-striped top-editors-table")(0)
 
  'NodeCollection aller Usereinträge erstellen
  Set knotenAlleUser = knotenUserTabelle.getElementsByTagName("tbody")(0).getElementsByTagName("tr")
 
  'Alle Charteinträge durchgehen
  For Each knotenEinUser In knotenAlleUser
    'IP Link auslesen
    userLink = knotenEinUser.getElementsByTagName("a")(0).href
    If InStr(1, userLink, "Special:Contributions") > 0 Then
      Cells(zeile, spalte - 1).Value = Trim(knotenEinUser.getElementsByTagName("a")(0).innertext)
      ActiveSheet.Hyperlinks.Add Anchor:=Cells(zeile, spalte), Address:=userLink, TextToDisplay:=userLink
      zeile = zeile + 1
    End If
  Next knotenEinUser
 
  'Aufräumen
  browser.Quit
  Set browser = Nothing
  Set knotenUserTabelle = Nothing
  Set knotenAlleUser = Nothing
  Set knotenEinUser = Nothing
End Sub

Viele Grüße,

Zwenn
@Zwenn  That's it ! Genau um die Einträge in Spalte 4 ging es mir. Danke Smile
@Fen

Welche MSXML.XMLHTTP verzion hasst du  ?

Welchen Code has du verwendest in diesem Fall ?

Mir gelingt es nicht mit:


PHP-Code:
With CreateObject("MSXML2.XMLHTTP")
  .Open "Get""URL"False
  
.send
  c00 
= .responseText
End With 
Noch ne Frage Huh :

kann man die IPs in Spalte 4 so rüberholen, das alle im selben Format erscheinen? Excel rückt einige IPs nach rechts ein. Wenn ich draufklicke verschwinden die Trennpunkte. Die sollen aber erhalten bleiben! (Check Zeile 7 im Anhangbeispiel)

Hat das ne Lösung?

LG
@snb:

Ich hatte die Abfrage nur mit Powershell getestet.

Nachgeprüft:

In VBA ging es weder mit

CreateObject("MSXML2.XMLHTTP")

noch mit

CreateObject("MSXML2.ServerXMLHTTP")

Ein Blick in die Header (F12, Netzwerk): Die Seite ist "HTTP/2":

Zum Vergleich:
Youtube.com (Http/2) ging mit MSXML2.ServerHttp ebenso www.herber.de (Http/1.1)

Deine Frage ist damit noch offen.
Seiten: 1 2