Как получить текст страницы, используя wget без HTML?

17

Если я попробую wget на веб-странице, я получу страницу в виде HTML. Возможно ли получить только текст файла без связанного HTML? (Это необходимо для меня, поскольку некоторые страницы HTML содержат программу c, загружаемую с тегами html. Мне нужно открыть ее в браузере и вручную скопировать текст, чтобы создать файл .c.)

Лунные грибы
источник
1
На самом деле это возможно, но вам нужно написать некоторую функцию, которая будет анализировать код со страницы и сохранять его как .c. Это не сложно, но это зависит от структуры страницы. Если вы предоставите ссылку, возможно, кто-то поможет вам с точным кодом. В противном случае sedили perlваши друзья.
Раш

Ответы:

26

wgetтолько получит документ. Если документ в HTML, то, что вы хотите, это результат анализа документа.

Вы могли бы, например, использовать lynx -dump -nolist, если у вас есть рысь вокруг.

lynxэто легкий, простой веб-браузер, который имеет -dumpфункцию, используемую для вывода результатов процесса синтаксического анализа. -nolistизбегает списка ссылок в конце, который появится, если на странице есть какие-либо гиперссылки.

Как упомянуто @Thor, elinksможет использоваться и для этого, так как он также имеет -dumpопцию (и должен -no-referencesпропустить список ссылок). Это может быть особенно полезно, если вы переходите по какому-либо сайту, используя -sigh-frames (MTFBWY).

Кроме того, имейте в виду, что, если страница действительно не является просто кодом C с тегами HTML, вам нужно будет проверить результат, просто чтобы убедиться, что там нет ничего, кроме кода C.

njsg
источник
5

Если у вас не установлены эти другие инструменты, есть только wget, а на странице нет форматирования, кроме обычного текста и ссылок, например, исходного кода или списка файлов, вы можете удалить HTML-код с помощью sed следующим образом:

wget -qO- http://address/of/page/you/want/to/view/ | sed -e 's/<[^>]*>//g'

Это использует wget для вывода исходного кода страницы в STDOUT и sed для удаления любых пар <> и чего-либо между ними.

Затем вы можете перенаправить вывод команды sed в файл, который вы хотите создать, используя>:

wget -qO- http://.../ | sed -e 's/<[^>]*>//g' > downloaded_file.txt

NB. Вы можете обнаружить, что в файле есть лишние пробелы, которые вам не нужны (например, строки с отступом в несколько столбцов)

Возможно, проще всего использовать ваш текстовый редактор, чтобы привести файл в порядок (или исходный форматер, когда вы загружаете исходный код на Си).

Если вам нужно проделать одну и ту же простую вещь с каждой строкой файла, вы можете включить команду для этого в команду sed (в данном случае один пробел):

wget -qO- http://.../ | sed -e 's/<[^>]*>//g;s/^ //g' > downloaded_stripped_file.txt
JohnGH
источник
3

просто чтобы добавить еще один инструмент. Я предпочитаю w3m, который lynxпохож на консольный браузер. Вы можете проверить, что уже доступно в вашей системе.

w3m -dump website.html
McPeppr
источник