Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

webseite auslesen ohne browser?!

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
StefNw
•->
•->


Anmeldedatum: 02.08.2006
Beiträge: 10

BeitragVerfasst am: 02.08.2006 - 09:58    Titel: webseite auslesen ohne browser?! Antworten mit Zitat

hallo,
ich würde gerne eine webseite nach einem bestimmten link absuchen (der immer an der selben position ist), und die dazugehörige quelle dann anschließend runterladen! das ganze aber ohne safari und co.!

ich hab es bis jetzt nur über javascript, und safari zum laufen gebracht! funktioniert da auch einwandfrei! nur soll das script, jeden tag, einmal im hintergrund gestartet werden, und dabei sollte möglichst kein browser offen sein müssen!

hat jemand eine idee, wie ich direkt eine URL als string erzeugen kann, die dann aufgerufen wird und "abgescannt" wird?!


Code:

on getlinksURLs()
   set js to "var linksURLtext = \"\";
var linksCount = document.links.length;
var lastLinksIndex = (linksCount - 1);

linksURLtext = document.links[1].href;
return linksURLtext;"
   
   tell application "Safari" to set linksURLtext to (do JavaScript js in front document)
   set linksURLs to {}
   if ((count linksURLtext) > 0) then
       set alllinksURLs to paragraphs of linksURLtext
       considering case
           repeat with i from 1 to (count alllinksURLs)
               set thisURL to item i of alllinksURLs
               if (thisURL is in linksURLs) then
               else
                   set end of linksURLs to thisURL
               end if
           end repeat
       end considering
   end if
   set the destination_file to ((path to desktop as string) & "test.zip")
   tell application "URL Access Scripting"
       download linksURLtext to destination_file replacing yes with progress
   end tell
   return linksURLtext
end getlinksURLs

getlinksURLs()

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 02.08.2006 - 10:28    Titel: Antworten mit Zitat

Hi!
Du kannst mittels

set siteURL to "http://www.spiegel.de"
set pagesHTML to do shell script "curl " & siteURL


den kompletten HTML-Code in eine Variable laden. Die Links kannst du ja dann per RegExp (wir hatten doch hier ein paar Spezies) herausfiltern lassen und den Link, der der richtige für dich ist, per

set linkToDownload to "http://www.spiegel.de"
set downloadToFile to quoted form of (POSIX path of ((path to desktop as string) & "test.zip"))
set pagesHTML to do shell script "curl -o " & downloadToFile & " " & linkToDownload


bei dir auf den Schreibtisch sichern.

Wenn die URL, die du herunterlädst, auf eine Datei zeigt, kannst du das Downloadergebnis auch so benennen lassen, wie die Datei auf dem Server hieß Cool :

set linkToDownload to "http://www.spiegel.de/static/sys/logo_120x61.gif"
set downloadToFolder to quoted form of (POSIX path of (path to desktop as string))
set pagesHTML to do shell script "cd " & downloadToFolder & "; curl -O " & linkToDownload


Mit den RegExps, um Hyperlinkstargets auszulesen, bin ich leider noch etwas zu holperig unterwegs, da hilft dir hier aber bestimmt noch jemand weiter… Neutral

CU
ShooTerKo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 02.08.2006 - 10:57    Titel: Antworten mit Zitat

Und natürlich:
WILLKOMMEN IM FORUM Very Happy

CU
ShooTerKo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
StefNw
•->
•->


Anmeldedatum: 02.08.2006
Beiträge: 10

BeitragVerfasst am: 02.08.2006 - 16:20    Titel: Antworten mit Zitat

hallo,
danke für die schöne begrüßung! Wink und dazu noch gleich ne ordentliche hilfestellung! Very Happy bin jetzt schon hin und weg!

nur bei:

set linkToDownload to "http://www.spiegel.de/static/sys/logo_120x61.gif"
Code:
set downloadToFolder to quoted form of (POSIX path of (path to desktop as string))
set pagesHTML to do shell script "cd " & downloadToFolder & "; curl -O " & linkToDownload

passiert bei mir garnichts! Neutral

woran liegts? kannst du mir da weiterhelfen?
und nach fleißigem googeln nach RegExps durft ich feststellen das es da auch kaum infos zu gibt!

in was hab ich mich da bloß reingeritten! Wink
_________________
while (!asleep) {sheep++};
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 02.08.2006 - 18:19    Titel: Antworten mit Zitat

Du bist online während der Ausführung, oder? Embarassed

Sehr merkwürdig...

Bei mir funzt es ohne Probleme Confused

Ich habe ja zwei Varianten des curl scripts geschickt. Die erste, um den HTML-Code einer Seite auszulesen
Code:
set siteURL to "http://www.spiegel.de"
set pagesHTML to do shell script "curl " & siteURL
, die zweite zum Downloaden einer Datei und sichern auf dem Schreibtisch.

Bei der zweiten ist mir durch Copy/Paste ein etwas reingerutscht, was unnötig ist. Die Variable pagesHTML soll bei der Downloadvariante nicht gefüllt werden, der curl-Befehl wie er ist gibt nichts zurück, wenn alles glatt läuft. Also:
Code:
set linkToDownload to "http://www.spiegel.de/static/sys/logo_120x61.gif"
set downloadToFolder to quoted form of (POSIX path of (path to desktop as string))
do shell script "cd " & downloadToFolder & "; curl -O " & linkToDownload


Nach Ausführen der zweiten Variante muss entweder eine Fehlermeldung aufspringen oder ein File "logo_120x61.gif" auf dem Schreibtisch liegen.

Melde dich, wenn es nicht so ist!

CU
ShooTerKo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 02.08.2006 - 23:43    Titel: Antworten mit Zitat

Probier das curl Kommando erstmal in einem Terminal aus! (alles in einer Zeile!)

Code:
curl --remote-name 'http://www.spiegel.de/static/sys/logo_120x61.gif'

Damit siehste dann zumindest schon mal, ob Fehler aufgetreten sind.

Und wenn Du mir dann noch sagst, wie man den gewünschten Link erkennen kann, gibt's von mir auch ein Shell/Perl Script, mit dem das ganze dann ohne Browser klappen sollte.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
StefNw
•->
•->


Anmeldedatum: 02.08.2006
Beiträge: 10

BeitragVerfasst am: 03.08.2006 - 08:21    Titel: Antworten mit Zitat

hallo,
ich muss gestehn: es läuft! nicht das ich gerne das gegenteil behauptet hätte!!! Laughing
muss wohl gestern irgendwas übersehn haben, falsch kopiert haben o.ä.?! Confused

es funktionieren beide teile, das einladen des HTML Quelltextes und auch das downloaden einer Quelle!

ich fühl mich dem ziel so nahe! Wink jetzt muss ich theoretisch nur noch den gewünschten link rausfiltern! gibt es da nicht eine einfache lösung, wie in vielen anderen sprachen zb. substr mit dem sich gewisse teile aus einem string auslesen lassen? der link den ich nämlich in dem quelltext suche hat zuvor immer den gleichen eindeutigen htmlcode, nachdem ich ja suchen könnte! ... werd mich gleich mal auf die suche machen!

zu dem terminal... hab ich ausprobiert, und hat anscheinend funktioniert! bekam keine fehlermeldung! ich gestehe: ich bin eigentlich pc user! Wink hab jetzt hier ein mac vorgesetzt bekommen, und muss mich sozusagen durchkämpfen! Confused aber ganz net hier, muss man sagen! Wink und das terminal hab ich heute zum erstenmal entdeckt! Embarassed

dennoch mal ein kleines danke... als zwischenbilanz! das große kommt hoffentlich bald! Wink
_________________
while (!asleep) {sheep++};
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 03.08.2006 - 09:21    Titel: Antworten mit Zitat

StefNw hat Folgendes geschrieben:
ich fühl mich dem ziel so nahe! Wink jetzt muss ich theoretisch nur noch den gewünschten link rausfiltern! gibt es da nicht eine einfache lösung, wie in vielen anderen sprachen zb. substr mit dem sich gewisse teile aus einem string auslesen lassen? der link den ich nämlich in dem quelltext suche hat zuvor immer den gleichen eindeutigen htmlcode, nachdem ich ja suchen könnte! ... werd mich gleich mal auf die suche machen!

Klar gibt es sowas. Aber das kann man auf einem Mac auch perl erledigen lassen. Mal eine Beispiel (Terminal):
Code:

curl --silent 'http://www.fischer-bayern.de' | perl -ne 'print "$1\n" while /\b(?:src|href)="(.*?)"/g'

Das z.B. filtert Dir sämtliche href und src aus der Webseite. Jetzt überlge mal, wieviel Aufwand sowas in AppleScript wäre! Ja! Das kann man in AS machen, aber da das ja weder interaktiv laufen soll, noch andere Programme steuern soll, wäre (für mich) AppleScript nicht das Mittel der Wahl.[/code]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
StefNw
•->
•->


Anmeldedatum: 02.08.2006
Beiträge: 10

BeitragVerfasst am: 03.08.2006 - 09:29    Titel: Antworten mit Zitat

mist! Laughing
Code:

set mytext to "blabla bla blabla<a href='test.html'>test</a>blabla bla blabla"
set searchStart to "<a href='"
set searchEnd to "'>test</a>"
set dif to the number of characters of the searchStart

set startPos to the offset of searchStart in the mytext
set endPos to the offset of searchEnd in the mytext

set link to (characters (startPos + dif) thru (endPos - 1) of mytext) as string
return link


in der sekunde fertig bekommen! hätt ich nur mal gewartet...
ich werd noch schnell deine variante ausprobieren! mal sehn ob ich damit zu recht komme... Wink
_________________
while (!asleep) {sheep++};
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
StefNw
•->
•->


Anmeldedatum: 02.08.2006
Beiträge: 10

BeitragVerfasst am: 03.08.2006 - 11:19    Titel: Antworten mit Zitat

ok, langsam komm ich da rein... glaub ich! Rolling Eyes

Code:

set curlScript to "curl --silent '" & webseite & "' | perl -ne \"print \"$1\" while /\b(?:src|href)='(.*zip)'/g'"

set link to do shell script curlScript

--download link


ich bekomm da einen syntax-fehler?! unverständlicherweiße...
_________________
while (!asleep) {sheep++};
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 03.08.2006 - 12:19    Titel: Antworten mit Zitat

Arrow Skeeve: Applaus
Very cool tool Cool

Um es als Applescriptstring an do shell script zu übergeben, müssen die " und die \ escaped werden. So funzt es dann korrekt:
set theWebSite to "http://www.fischer-bayern.de"
set unixCall to "curl --silent '" & theWebSite & "' | perl -ne 'print \"$1\\n\" while /\\b(?:src|href)=\"(.*?)\"/g' "
set allTargetsAndSources to paragraphs of (do shell script unixCall)


Hiernach hast du sämtliche targets und src-Attributwerte als Liste in allTargetsAndSources vorliegen Laughing Laughing


CU
Schmiddl
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
StefNw
•->
•->


Anmeldedatum: 02.08.2006
Beiträge: 10

BeitragVerfasst am: 03.08.2006 - 12:56    Titel: Antworten mit Zitat

super! läuft astrein! Very Happy

nur hab ich noch, da pc user, bisschen probleme mit der pfadangabe!

set downloadToFolder to quoted form of (POSIX path of (path to desktop as string))

ich hätte das ganze nämlich ungern aufm desktop! wie bekomm ich denn den pfad zur root zb?! hab versucht desktop abzuändern in einen string "HD:zipfiles"... ergibt aber einen fehler!

und wär es möglich den pfad auf einen server zu referenzieren? also anstatt HD:zipfiles:01 zb SERVER1:zipfiles:01? (entschuldigt die pfadschreibweiße!)[/b]
_________________
while (!asleep) {sheep++};
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 03.08.2006 - 15:39    Titel: Antworten mit Zitat

StefNw hat Folgendes geschrieben:
set downloadToFolder to quoted form of (POSIX path of (path to desktop as string))

ich hätte das ganze nämlich ungern aufm desktop! wie bekomm ich denn den pfad zur root zb?!

Code:
set downloadToFolder to "/"


StefNw hat Folgendes geschrieben:
also anstatt HD:zipfiles:01 zb SERVER1:zipfiles:01? (entschuldigt die pfadschreibweiße!)[/b]

Such Dir doch den Pfad über das Terminal raus und nimm das. Also wenn ich z.B. was auf einem Server ansprechen will ist es sowas wie:
Code:
/Volumes/worf/Hase.pdf

also "/Volumes/" & server & pfad & dateiname...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
wiso
•-->
•-->


Anmeldedatum: 05.09.2006
Beiträge: 25

BeitragVerfasst am: 12.10.2006 - 22:06    Titel: Antworten mit Zitat

guten abend,

hallo StefNw. wäre es möglich das ich das gesamte script bekommen könnte. wäre eine gute grundlage für meine anpassung.

besten dank,
mfg,
wiso
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter