Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>Aus Safari Webarchive die einzelnen Elemente ziehen?

Aus Safari Webarchive die einzelnen Elemente ziehen?

mee
mee30.08.0517:55
Hallo zusammen

Ich hab n kleines Problem. Hab gestern ausversehen ein Folder gelöscht mit einer ganzen Website drin, welche ich nun schon seit 2 Wochen dran rum gebastelt habe. Das einzige was ich noch machen konnte war, ein Webarchive von der ersten Seite.
Dieses WEbarchive File schaut auch super aus, genau so, wie ich es brauche, nur sind die CSS Dateien eben separat verlinkt und diesse bräuchte ich dingendst.

Gibt es eine Möglichkeit aus dem Webarchive dieses Element, welches sauber dargestellt wird, raus zu nehmen?

Wäre echt super ....

Tausend Dank
0

Kommentare

Claude
Claude30.08.0518:36
Hallo mee, der Link beantwortet zwar nicht deine Frage (weiss nicht, ob es eine Antwort gibt), zeigt aber die Schwächen des Webarchives von Safari auf –>
0
rofl
rofl30.08.0518:41
Also öffnen kann man es zB mit dem PropertyList Editor (XML Programm unter /Developer/Applications/Utilities).

Das scheint aber etwas ganz geschicktes zu sein, so einfach kommt man leider da nicht an die Daten...
0
mee
mee30.08.0518:46
rofl Mmmhh, das hab ich bei mir gar nicht drinn ...

claude Danke für den Hinweis. Also macht iCab n schöneres Web-Archive, als Safari.

Nur zu blöd, dass man nicht dan die Datei rein kommt. Man sieht ja auch kein Paketinhalt und der email senden geht im WEb-Archive auch nicht mehr ...

0
rofl
rofl30.08.0518:51
Man denke macosxhints.com
0
rofl
rofl30.08.0518:52
edit: danke
0
rofl
rofl30.08.0518:59
Damit es auch hier in der Datenbank steht...:
To extract an example.webarchive file, use this command:
textutil -convert html example.webarchive
This will extract the HTML file as well as the attached jpeg, gif, and other image files.
0
mee
mee30.08.0519:04
wenn ich es in Word aufmachen, dann shee ich zumindest die CSS und HTML Einstellungen, was mir sehr viel hilft ...
Beim Terminal Befehl, bekomme ich leider die CSS nicht mit, aber so kombiniert ist das super.

Danke Euch
0
rofl
rofl30.08.0519:09
Statt Word würde ich ein Programm wie SubEthaEdit benutzen.


Ich spiel damit mal rum, es kann sein, dass das CSS aus dem Netz genommen wird...
0
Rantanplan
Rantanplan30.08.0519:12
Im Gegensatz zu dem zip von iCab (der Zombie unter den Webbrowsern: nie richtig am Leben, aber auch noch nicht gestorben ) enthält das Webarchiv von Safari sogar mehr Informationen: die URLs jeder einzelnen Ressource zum Beispiel, den mime type und die server response. Verpackt in dem allgegenwärtigen Datenformat von OS X: einer property list.
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
0
rofl
rofl30.08.0519:12
Doch das CSS speichert er auch, allerdings im html eingebettet. Schau dir mal die extrahierte html-Datei näher an.
0
Rantanplan
Rantanplan30.08.0519:23
rofl
Das scheint aber etwas ganz geschicktes zu sein, so einfach kommt man leider da nicht an die Daten...

Doch, ist ganz einfach: die Daten sind base64 encoded
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
0
Rantanplan
Rantanplan30.08.0522:29
Wen es interessiert, ich hab mal ein bissl was reingeklopft. Mein Interesse galt der Perl-Cocoa-Bridge, der Source sieht deswegen etwas wüst aus und ist nur als Anregung zu sehen, weil z.B. der Dateiname hardcoded ist Warum initWithData:encoding: nicht tut, das ist mir nicht so klar, deswegen habe ich NSData quick'n'dirty in eine Zeichenkette verwurstet

Mal kucken wie der Source nach dem Reinkopieren aussieht.

Achso, was tut das Ding? Es extrahiert alle Dateien aus dem Webarchiv.


use Foundation;

$KEY_MAIN_RES = 'WebMainResource';
$KEY_SUB_RES = 'WebSubresources';
$KEY_MIME = 'WebResourceMIMEType';
$KEY_DATA = 'WebResourceData';
$KEY_URL = 'WebResourceURL';

sub nsdata_to_string($)
{
# $str = NSStringalloc()initWithData_encoding_( $data, NSASCIIStringEncoding );
# return $strUTF8String();
my $str = $_[0]description()UTF8String();
$str =~ s/[\<\> ]//g;
$str =~ s/([a-fA-F0-9]{2})/chr(hex $1)/eg;
return $str;
}

sub write_file($$)
{
my ($url,$content) = @_;
$url =~ /\/([^\/]*)$/;
my $fname = $1;
print $fname;
open( F, ">$fname" );
print F $content;
close( F );
}

$file = "./test.webarchive";

$plist = NSMutableDictionarydictionaryWithContentsOfFile_( $file );
if ( $plist and $$plist) {
$mainResource = $plistobjectForKey_( $KEY_MAIN_RES );
$data = $mainResourceobjectForKey_( $KEY_DATA );
$str = nsdata_to_string( $data );
$url = $mainResourceobjectForKey_( $KEY_URL );
write_file( $urlUTF8String(), $str );
print "\n";

$subResources = $plistobjectForKey_( $KEY_SUB_RES );
$i = 0;
while ( $i<$subResourcescount() ) {
print "$i: ";
$res = $subResourcesobjectAtIndex_( $i++ );
$data = $resobjectForKey_( $KEY_DATA );
$str = nsdata_to_string( $data) . "\n\n";
$url = $resobjectForKey_( $KEY_URL );
write_file( $urlUTF8String(), $str );
print "\n";
}
} else {
die "Error loading file.\n";
}
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
0
kawi
kawi30.08.0522:33
Dann speicher ich doch lieber in firefox die webseitenb als "Webseite, komplett" - da hab ich jederzeit Zugriff auf alle Dateien
0
Rantanplan
Rantanplan30.08.0522:40
Achso ja, daß es mit textutil geht, weiß ich Wollte halt mal selber drin rumfummeln
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
0
Rantanplan
Rantanplan30.08.0522:41
kawi

Schon klar, aber die WebArchive von Safari kann man so schön in DEVONthink einlagern
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
0

Kommentieren

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