18.01.2020, 00:53 (Dieser Beitrag wurde zuletzt bearbeitet: 18.01.2020, 01:31 von Teamplayer.)
Hi Folks,
ich benötige ein Tool, das in der Lage ist, die GESAMTE USER-LISTE, welche unter TOP-EDITORS in diesem Dokument https://xtools.wmflabs.org/articleinfo/d...rlimit=200[url=https://xtools.wmflabs.org/articleinfo/de.wikipedia.org/Kunst/2019-02-28][/url] zu finden ist, in ein Excel-Sheet zu übertragen. Allerdings sollen nicht die Usernamen in die Tabelle übertragen werden, SONDERN DIE LINKS, die sich hinter den Usernames verbergen. Es soll nachher so aussehen wie im Template-Beispiel.
IP’s sollen einfach nur kopiert (quasi abgeschrieben) werden. Eventuell in ein separates Excel-Sheet.
Werde bekloppt beim händischen übertragen der Links. :22:
deinen doppelten Post habe ich gelöscht. Falls du nach dem Absenden deines Beitrags noch etwas hinzufügen möchtest, kannst du diesen innerhalb der ersten 60 Minuten editieren.
Doch zu deiner Anfrage.
Das gesuchte Tool ist in deinem Excel integriert: PowerQuery aka Daten/Daten abrufen und transformieren ==> Aus dem Web. Allerdings fürchte ich, dass du hier eventuell aufgrund Einschränkungen nicht befugt bist, Listen automatisch runterzuladen. Diesen Hinweis habe ich bekommen:
Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:1 Nutzer sagt Danke an WillWissen für diesen Beitrag 28 • Teamplayer
Zitat:Allerdings fürchte ich, dass du hier eventuell aufgrund Einschränkungen nicht befugt bist, Listen automatisch runterzuladen. Diesen Hinweis habe ich bekommen:
genau das habe ich erwartet und ich hätte mich auch sehr gewundert, wäre es zu einem anderen Ergebnis gekommen.
...und das Löschen des doppelten Posts. Wollte ich selbst machen. Keinen Löschen Button gefunden. Sry, ist meinem Anfängertum geschuldet.
Danke auch für den Hinweis auf das integrierte Tool (Query). Ich bin mir nicht sicher, ob meine Frage von Dir vollständig verstanden wurde. Es geht nicht darum, nur die Benutzernamen zu kopieren, sondern die Links zu den Benutzerseiten zu übertragen, welche sich öffnen, wenn man auf den Usernamen in der Liste klickt. Das Tool soll den gesamten Kopiervorgang simulieren, den ich zur Zeit händisch ausführe, nämlich: 1.Username in Wiki klicken ->2. Linkadresse kopieren (2 klicks) ->3. zu Excel wechseln -> 4. doppelklicken in Zelle ->5. per rechtsklick Zelle aktivieren -> 6. einfügen.
ich habe deine Anfrage schon beim erstenmal verstanden - PQ benötigt aber erst einmal die entsprechende Datenbank, damit du die benötigten Angaben herausarbeiten kannst. Und das geht - wie ich dir geschrieben hatte - vermutlich aufgrund Einschränkungen des/der Seitenbetreiber nicht.
Eine andere Möglichkeit des Herauskopierens (außer der manuellen Art) kenne ich nicht.
Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:1 Nutzer sagt Danke an WillWissen für diesen Beitrag 28 • Teamplayer
da musst Du nix simulieren und man kann alle Links auf einmal holen. Dauert nur ein paar Sekunden. Allerdings habe ich die Links nicht "eingedeutscht", da Wikipedia zwischen "Benutzer:" und "Benutzerin:" unterscheidet, während im Originallink immer "User:" steht. Da habe ich keine Ahnung, wie ich da männlich und weiblich herleiten soll. Ist aber nicht schlimm, denn wenn man einen Link anklickt, kommt man trotzdem auf die Deutsche Seite.
Kopiere folgenden Code in ein Modul. Das Makro schreibt alle Links ab Zeile 2, Spalte 5 in die Tabelle, aus der es ausgeführt wird:
Code:
Sub WikipediaUserListeAuslesen()
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 'User Link auslesen userLink = knotenEinUser.getElementsByTagName("a")(0).href ActiveSheet.Hyperlinks.Add Anchor:=Cells(zeile, spalte), Address:=userLink, TextToDisplay:=userLink zeile = zeile + 1 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:1 Nutzer sagt Danke an Zwenn für diesen Beitrag 28 • Teamplayer
18.01.2020, 18:51 (Dieser Beitrag wurde zuletzt bearbeitet: 18.01.2020, 18:52 von Zwenn.)
Hallo Fennek,
der "unbestrittene Meister des DOM" klingt zwar gut, aber der bin ich ganz sicher nicht :21: Ich selbst habe so einiges von Anton gelernt und wenn ich mir ansehe was Leute wie QHaar auf Stackoverflow wissen und können, fehlt da noch so einiges bei mir. Aber auch deshalb bin ich ja in den Foren aktiv :)
Viele Grüße,
Zwenn
PS: Wenn Du aus der 200 am Ende der URL eine 2000 machst, liest Du auch alle Links auf einmal aus Eine 1000 müsste es auch tun PPS: Dein Code liest nur die Links mit User: aus. Sämtliche IP Adressen erwischst Du damit nicht
Ich war etwas frustriert: Seit kurzem lese ich bei den Viren-Jägern mit und sehe immer mehr, wie viel mir noch fehlt. Auch ein kleiner Versuch mit "MS Office-Forensik" brachte nicht das Gewünschte.
Da kam eine kurze Pause mit diesem Powershell-Code gerade richtig.
18.01.2020, 19:50 (Dieser Beitrag wurde zuletzt bearbeitet: 18.01.2020, 19:50 von snb.)
Die website besucht: die Webpage gespeichert als "G:\Kunst - Page History - XTools.htm"
Und dann in Excel:
PHP-Code:
Sub M_snb() With CreateObject("htmlfile") .Body.innerHTML = CreateObject("scripting.filesystemobject").opentextfile("G:\Kunst - Page History - XTools.htm").readall ReDim sn(.Links.Length, 1) For Each it In .Links If InStr(it.href, "User:") Then sn(y, 0) = it.href sn(y, 1) = it.innertext y = y + 1 End If Next End With
Sheet1.Cells(1).Resize(UBound(sn), 2) = sn End Sub