Моя цель — вывести исходный HTML-код в файл, я используюw3mдля просмотра веб-страниц с терминала.
При использовании следующей команды на терминале: w3m <url> -dump
программа отображает веб-сайт в неинтерактивном режиме, но не его исходный HTML-код.
Если вы откроете веб-сайт с помощью w3m <url>
, терминал отобразит сайт, и если вы нажметев, то программа отобразит исходный код html, я пытался написать скрипт, но безуспешно. Я думал, что аргумент командной строки -dump_source
мне поможет, но единственное, что я получил, это нечеловеческий контент, я не знаю, что -dump_source
должно было вернуться
Вот что я попробовал на данный момент:
- Использовал
-T text/html
на-dump
терминале, но вывод не изменился - Используйте
-T text/plain
его-dump_source
в терминале, надеясь, что нечеловеческий вывод будет преобразован в обычный текст, но безуспешно (я не понял, для чего используется -T, даже после прочтения руководства w3m, набрав егоman w3m
в терминале) - Зная, что нажатиевпока w3m отображает переключение веб-сайта с содержимого веб-страницы на исходный код HTML, я попытался использоватьгдбчтобы присоединить его к процессу w3m и перенаправить егостандартный вводистандартный выводв мои файлы (input.txt, output.txt), где input.txt содержит одинв, но у меня не получилось. Выполнение этого на моей тестовой программе сработало как и ожидалось. Я следовал тому, что было описаноздесь. Если я напишу
ls -l /proc/<w3m_pid>/fd
, где w3m_pid — это мой идентификатор процесса w3m, который я получил с помощьюps ax
терминала, я увижу, что есть 3 файловых дескриптора, если я попытаюсь перенаправить третий, программа аварийно завершит работу и отобразит:Произошла ошибка: errorno=25 - Перенаправление стандартного ввода-вывода
w3m <url> < input.txt > output.txt
также не сработало - W3M использует сочетание клавиш для навигации в Интернете. Это означает, что если вы нажметевнет необходимости нажимать Enter, терминал не буферизует ввод, используя gdb, присоединенный к процессу w3m, я попытался удалить его с помощью
p system ("/bin/stty cooked")
, но привязка клавиш w3m не изменилась.
У меня вопрос: почему перенаправление ввода-вывода с помощью gdb не работает и что я могу сделать, чтобы получить исходный код HTML? В w3m есть возможность выводить исходный код HTML, которой у меня нет, иначе мне пришлось бы использовать другую программу?
PS: Мне нужен исходный код HTML для университетского домашнего задания, с исходным кодом HTML я могу создать скрипт для просмотра веб-страниц и вывода страницы в файл, затем я должен использовать эти выходные данные с Flex для извлечения статической информации о вещах в Интернете, например: сколько раз слово stack встречается в вопросах по языку C? Это моя идея.
Мы ценим любые предложения.
Версия W3M:0.5.3+debian-15
Версия GDB:7.7.1
Версия Ubuntu:14.04
Заранее спасибо!
решение1
Почему вы не можете использовать curl
?
curl web-address > file-source.
выведет исходный код вfile
Так
curl http://askubuntu.com/questions/822139/how-to-output-web-page-html-source-code-into-a-file > source-html
решение2
На этот вопрос уже был дан ответ:https://askubuntu.com/a/1273410/1124534
w3m -o accept_encoding=UTF-8 -dump_source google.com >file