Mein Ziel ist es, eine HTML-Quelle in eine Datei auszugeben. Ich verwendew3mum vom Terminal aus im Internet zu surfen.
Wenn Sie den folgenden Befehl auf dem Terminal verwenden, w3m <url> -dump
zeigt das Programm die Website auf nicht interaktive Weise an, jedoch nicht deren HTML-Quelle.
Wenn Sie eine Website mit öffnen w3m <url>
, zeigt das Terminal die Website an. Wenn Sie drücken,gegen, dann zeigt das Programm die HTML-Quelle an. Ich habe versucht, dies zu skripten, aber ohne Erfolg. Ich dachte, das Befehlszeilenargument -dump_source
würde mir helfen, aber das einzige, was ich bekam, war ein nicht von Menschen gelesener Inhalt. Ich weiß nicht, was -dump_source
zurückgegeben werden sollte
Folgendes habe ich bisher versucht:
- Verwenden Sie es
-T text/html
mit-dump
dem Terminal, aber die Ausgabe hat sich nicht geändert - Verwenden Sie
-T text/plain
es-dump_source
auf dem Terminal in der Hoffnung, dass die nicht-menschliche Ausgabe in einfachen Text umgewandelt wird, aber ohne Erfolg (ich habe nicht verstanden, wofür -T verwendet wird, selbst nachdem ich das w3m-Handbuch durch Eintippenman w3m
auf dem Terminal gelesen habe). - Wissend, dass das Drückengegenwährend w3m eine Webseite anzeigt, wechselt es vom Webseiteninhalt zum HTML-Quellcode. Ich habe versucht,gdbum es an den w3m-Prozess anzuhängen und seinestdinUndstdoutzu meinen Dateien (input.txt, output.txt), wobei input.txt eine einzelnegegen, aber ich hatte keinen Erfolg. Dies bei meinem Testprogramm zu tun, funktionierte wie erwartet. Ich folgte dem, was beschrieben wurdeHier. Wenn ich schreibe
ls -l /proc/<w3m_pid>/fd
, wobei w3m_pid meine W3M-Prozess-ID ist, die ich durch die Verwendungps ax
im Terminal erhalten habe, kann ich sehen, dass es drei Dateideskriptoren gibt. Wenn ich versuche, den dritten umzuleiten, stürzt das Programm ab und zeigt Folgendes an:Es ist ein Fehler aufgetreten: errorno=25 - Auch die Umleitung der Standard-E/A
w3m <url> < input.txt > output.txt
funktionierte nicht. - W3M verwendet Tastenkombinationen, um im Web zu navigieren. Das bedeutet, dass Sie, wenn Siegegenes ist nicht nötig, die Eingabetaste zu drücken, das Terminal puffert die Eingabe nicht. Mithilfe von gdb, das an den w3m-Prozess angehängt ist, habe ich versucht, es mithilfe von zu entfernen
p system ("/bin/stty cooked")
, aber die w3m-Tastenkombination hat sich nicht geändert.
Meine Frage ist: Warum funktioniert die Umleitung von E/A mit gdb nicht und was kann ich tun, um den HTML-Quellcode zu erhalten? W3M: Gibt es eine Option zur Ausgabe des HTML-Quellcodes, die mir fehlt, oder müsste ich ein anderes Programm verwenden?
PS: Ich brauche HTML-Quellcode für eine Uni-Hausaufgabe. Mit HTML-Quellcode kann ich ein Skript zum Surfen im Internet erstellen und die Seite in eine Datei ausgeben. Diese Ausgaben soll ich dann mit Flex verwenden, um statistische Informationen über Dinge im Internet zu extrahieren, z. B.: Wie oft kommt der Wortstapel in Fragen zur Sprache C vor? Das ist meine Idee.
Ich bin für jeden Vorschlag dankbar.
W3M-Version:0.5.3+debian-15
GDB-Version:7.7.1
Ubuntu-Version:14.04
Dank im Voraus!
Antwort1
Warum können Sie nicht verwenden curl
?
curl web-address > file-source.
gibt den Quellcode in derfile
So was
curl http://askubuntu.com/questions/822139/how-to-output-web-page-html-source-code-into-a-file > source-html
Antwort2
Dies wurde bereits beantwortet in:https://askubuntu.com/a/1273410/1124534
w3m -o accept_encoding=UTF-8 -dump_source google.com >file