Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Frage an applescript-pros. Link-URLs auslesen

Frage an applescript-pros. Link-URLs auslesen

flowgrow
flowgrow02.12.0802:03
hey leute. ich hab folgendes problem: ich will gerne die URL von diversen nicht dynamischen Links auslesen.
ich hab mir gedacht, am einfachsten geht das mit UIScripting, also hab ich mal schnell den UIBrowser gezogen und mir den "Pfad" zu meinem link geholt.
jetzt aber das problem: wenn ich den wert vom "AXURL" attribut auslesen will, passiert einfach nichts in den ergebnissen nicht einmal ein leerer string(zum vergleich bei AXtitle kommt "")
tell application "System Events"
    get value of attribute "AXURL" of UI element 20 of UI element 1 of scroll area 1 of group 3 of window 1 of process "Safari"
end tell

was mach ich falsch?

bitte um hilfe und danke im voraus


„Chuck Norris hat mehr Kreditkarten als Max Mustermann!“
0

Kommentare

flowgrow
flowgrow02.12.0802:19
noch als kleiner zusatz: im uibrowser wird neben AXURL ein wert angezeigt, also muss das ja irgendwie auslesbar sein... naja. wir werden da sicher eine lösung finden
„Chuck Norris hat mehr Kreditkarten als Max Mustermann!“
0
Michael Schmidt
Michael Schmidt02.12.0810:10
Willst du nicht lieber den HTML-Quellcode holen und dir die hrefs auslesen?

CU
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
_mäuschen
_mäuschen02.12.0811:17

set wert to get value… ?


0
flowgrow
flowgrow02.12.0814:23
mäusschen
so schlau war ich natürlich auch schon... funktioniert aber nicht - Fehlermeldung: Die Variable "wert" ist nicht definiert

Michael Schmidt
Ja ist auch keine dumme idee, nur leider weiß ich nich wie das gehen könnte... kannst du mir da vielleicht helfen?
„Chuck Norris hat mehr Kreditkarten als Max Mustermann!“
0
flowgrow
flowgrow02.12.0817:36
keiner da, der noch eine idee hat?
„Chuck Norris hat mehr Kreditkarten als Max Mustermann!“
0
_mäuschen
_mäuschen02.12.0817:40

hmmm

Finde keine web site mit AXURL als Attribut

Hast' mal 'nen link?


0
flowgrow
flowgrow02.12.0817:44
jetzt wo dus sagst... ist anscheinend nur bei bildern (siehe: ) unten die drei links
„Chuck Norris hat mehr Kreditkarten als Max Mustermann!“
0
_mäuschen
_mäuschen02.12.0820:01

AppleScript unterstützt wohl nicht alle Attribute. Schade. Oder zum Glück?

Und in Deinem code fehlte noch das <image 1>


0
_mäuschen
_mäuschen02.12.0820:01

set werte to {}
tell application "System Events"
set countAttributes to count attributes of image 1 ¬
of UI element 20 of UI element 1 of scroll area 1 ¬
of group 3 of window 1 of process "Safari"
repeat with x from 1 to countAttributes
try
get value of attribute x of image 1 of UI element 20 ¬
of UI element 1 of scroll area 1 of group 3 ¬
of window 1 of process "Safari"
copy the result as string to end of werte
end try
set werte to werte & return
end repeat
end tell
log werte
0
_mäuschen
_mäuschen02.12.0820:05

Warum frisst dieser grauslich rosa Fleck mir immer die TABs weg?

0
flowgrow
flowgrow02.12.0822:25
sry war leider weg von 7 bis jetzt... auf jeden fall schon mal danke für die antwort. ich habs aber noch nicht getestet
„Chuck Norris hat mehr Kreditkarten als Max Mustermann!“
0
flowgrow
flowgrow02.12.0822:30
scheint wohl nicht zu funktionieren. so wie dus auch oben schon gesagt hast... blöd... muss ich mir wohl was anderes einfallen lassen
„Chuck Norris hat mehr Kreditkarten als Max Mustermann!“
0
Michael Schmidt
Michael Schmidt03.12.0810:15
Sorry, hatte gestern leider keine Zeit mehr

Probier mal das hier:
tell application "Safari"
    tell current tab of window 1
        set pagesSource to get source
    end tell
end tell
do shell script "echo " & quoted form of pagesSource & " | grep \"href=\" | sed s/.*href..//g | sed s/\\\".*$//g"

Könnte funzen, aber m.E. nur, wenn der HTML-Code korrekt geschrieben ist. Er darf auch nicht nur aus einer Zeile bestehen

Meine RegExp-Kenntnisse sind sehr beschränkt, vielleicht kann da ja noch jemand anders helfen...

Alternativ könntest du den Quellcode auch per curl holen

CU
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
Resistance03.12.0818:31
Also ich würde das mit den NSXml Klassen machen (als Foundation App), allerdings ist das mit Sicherheit der aufwendigste Weg.
0
_mäuschen
_mäuschen03.12.0818:54
…so…
0
flowgrow
flowgrow03.12.0820:55
mäusschen & michael schmidt ihr seid helden! danke vielmals
„Chuck Norris hat mehr Kreditkarten als Max Mustermann!“
0
flowgrow
flowgrow03.12.0821:31
mäusschen könntest du mir vllt auch noch genauer erklären, was da passiert, damit ich das auch für andere websites verwenden kann?
zb was bedeuten die dollar zeichen, und was is awk?
substr hab ich auch noch nicht ganz verstanden

also bitte ich vielmals um weitere erläuterungen... vieeelen dank
„Chuck Norris hat mehr Kreditkarten als Max Mustermann!“
0
_mäuschen
_mäuschen03.12.0823:03

$s in shells sind Variablen

In diesem script

$1 - Resultat des curl Befehls

$2 - die 2te Variable des Resultats des grep Befehls bestehend aus $1 bis $6
href="index.php?section=produkte&amp;kartei=shirt&amp;pid=33"><img

wie in Zeile
<a href="index.php?section=produkte&amp;kartei=shirt&amp;pid=33"><img src="Media/Bilder/produkte/s_product_id33.jpg" alt="Neues Produkt" /></a>
zu sehen. Leerschlag

substr(s, m, n)
the n-character substring of s that begins at position m counted from 1.

index.php?section=produkte&amp;kartei=shirt&amp;pid=33

man awk


0
hubionmac
hubionmac30.12.0809:18
JavaScript kann Dir da deutlich komfortabler weiterhelfen, als es ein Shell-Script tuen könnte... und ist auch verdammt schnell dabei =)
Vor einiger Zeit habe ich mir mal ein Skript geschrieben, welches alle Bilder einer Website lädt, dazu öffnest Du die Website in Safari und das Skript lädt sich alle verlinkten Bilder herunter...
tell application "Safari"
   tell document 1
      --alle Image-Verlinkungen Zählen
      set lc to do JavaScript "document.images.length;"
      repeat with i from 1 to lc
         --Den Link zu dem Bild i auslesen
         set alink to do JavaScript "document.images[" & i & "].src;"
         try
            --und wenn es diesen Pfad beinhaltet....
            if alink contains "/day_pics/tn/tn_" then
               --sich den Dateinamen aus der URL bauen
               set Dateiname to (do shell script "basename " & alink)
               ---und das ganze herunterladen =)
               do shell script "curl " & alink & "|cat>~/Pictures/" & Dateiname
            end if
         end try
      end repeat
   end tell
end tell
„[i]don't panic[/i]“
0
Michael Schmidt
Michael Schmidt30.12.0811:14
Für href sieht das Ganze dann so aus:
set allLinks to {}
tell application "Safari"
    tell document 1
        --alle Hyperlinks holen
        set lc to do JavaScript "document.links.length;"
        repeat with i from 1 to lc
            -- die href-Werte holen und zur Liste allLinks hinzufügen
            set end of allLinks to do JavaScript "document.links[" & i & "].href;"
        end repeat
    end tell
end tell
-- die Liste allLinks enthält alle href-Werte

hubionmac:
Manchmal sieht man den Wald vor lauter Bäumen nicht Coole Idee...

CU
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.