Hallo Teamplayer,
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:
[
attachment=28987]
Hallo,
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.
Hallo Günter,
vielen Dank für die schnelle Antwort...
...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.
Hab ich mich verständlich ausgedrückt?
LG
Hi,
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.
Hallo 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
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
sorry Zwenn, war nicht persönlich gemeint.
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.
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