Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Import von Wikipedia-Autoren-Link-Liste in Excel-Tabelle
#11
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
Antworten Top
#12
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
Antworten Top
#13
@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.
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • Teamplayer
Antworten Top
#14
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
[-] Folgende(r) 1 Nutzer sagt Danke an Zwenn für diesen Beitrag:
  • Teamplayer
Antworten Top
#15
@Zwenn  That's it ! Genau um die Einträge in Spalte 4 ging es mir. Danke Smile
Antworten Top
#16
@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 
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#17
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


Angehängte Dateien
.xlsx   Template_Beispiel_Trennpunkte_IPs.xlsx (Größe: 20,58 KB / Downloads: 1)
Antworten Top
#18
@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.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste