Kompx.com or Compmiscellanea.com

Lynx. Извлечение данных из веб-страниц

Операционные системы : Linux

Помимо просмотра / отображения веб-страниц, Lynx может выводить форматированный текст содержания веб-документа или его HTML источник на стандартный вывод. И это затем может быть обработано с помощью некоторых инструментов, имеющихся в Linux, таких как gawk, Perl, sed, grep, и т.д. Некоторые примеры:

Работа с внешними ссылками

Подсчитать количество внешних ссылок

Lynx выводит список ссылок из содержимого веб-документа на стандартный вывод. Grep ищет только строки, начинающиеся с "http:", перенаправляет результат далее, опять для grep, который выбирает из них строки не начинающиеся с "http://compmiscellanea.com" and "http://www.compmiscellanea.com" (внешние ссылки веб-страницы), wc подсчитывает число извлеченных внешних ссылок и отображает его:

lynx -dump -listonly "http://compmiscellanea.com/en/elinks.htm" | grep -o "http:.*" | grep -E -v "http://compmiscellanea.com|http://www.compmiscellanea.com" | wc -l

Найти внешние ссылки и сохранить их в файл

Lynx выводит список ссылок из содержимого веб-документа на стандартный вывод. Grep ищет только строки, начинающиеся с "http:", перенаправляет результат далее, опять для grep, который выбирает из них строки не начинающиеся с "http://compmiscellanea.com" and "http://www.compmiscellanea.com" (внешние ссылки веб-страницы) и сохраняет их в файл:

lynx -dump -listonly "http://compmiscellanea.com/en/elinks.htm" | grep -o "http:.*" | grep -E -v "http://compmiscellanea.com|http://www.compmiscellanea.com" > file.txt

Найти внешние ссылки, опустить повторяющиеся записи и сохранить результат в файл

Lynx выводит список ссылок из содержимого веб-документа на стандартный вывод. Grep ищет только строки, начинающиеся с "http:", перенаправляет результат далее, опять для grep, который выбирает из них строки не начинающиеся с "http://compmiscellanea.com" and "http://www.compmiscellanea.com" (внешние ссылки веб-страницы), sort сортирует их, а uniq удаляет повторяющиеся записи. Результат сохраняется в файл:

lynx -dump -listonly "http://compmiscellanea.com/en/elinks.htm" | grep -o "http:.*" | grep -E -v "http://compmiscellanea.com|http://www.compmiscellanea.com" | sort | uniq > file.txt

Работа с внутренними ссылками

Подсчитать количество внутренних ссылок

Lynx выводит список ссылок из содержимого веб-документа на стандартный вывод. Grep ищет только строки, начинающиеся с "http://compmiscellanea.com" and "http://www.compmiscellanea.com" (внутренние ссылки), wc подсчитывает число извлеченных внутренних ссылок и отображает его:

lynx -dump -listonly "http://compmiscellanea.com/en/elinks.htm" | grep -E -o "http://compmiscellanea.com.*|http://www.compmiscellanea.com.*" | wc -l

Найти внутренние ссылки и сохранить их в файл

Lynx выводит список ссылок из содержимого веб-документа на стандартный вывод. Grep ищет только строки, начинающиеся с "http://compmiscellanea.com" and "http://www.compmiscellanea.com" (внутренние ссылки) и сохраняет их в файл:

lynx -dump -listonly "http://compmiscellanea.com/en/elinks.htm" | grep -E -o "http://compmiscellanea.com.*|http://www.compmiscellanea.com.*" > file.txt

Найти внутренние ссылки, опустить повторяющиеся записи и сохранить результат в файл

Lynx выводит список ссылок из содержимого веб-документа на стандартный вывод. Grep ищет только строки, начинающиеся с "http://compmiscellanea.com" and "http://www.compmiscellanea.com" (внутренние ссылки), sort сортирует их, а uniq удаляет повторяющиеся записи. Результат сохраняется в файл:

lynx -dump -listonly "http://compmiscellanea.com/en/elinks.htm" | grep -E -o "http://compmiscellanea.com.*|http://www.compmiscellanea.com.*" | sort | uniq > file.txt

Смысл использования "lynx -dump -listonly" вместо просто "lynx -dump" состоит в том, что могут попасться веб-страницы с простыми текстовыми строками, выглядящими как ссылки (содержащие "http://", к примеру) в тексте содержания, как это имеет место на странице http://www.kompx.com/ru/elinks.htm. "Lynx -dump" вывел бы на стандартный вывод форматированный текст, где настоящие ссылки и ссылкоподобные простые текстовые строки выглядели бы одинаково и grep не смог бы их различить. "Lynx -dump -listonly" выдает только список ссылок, так что не случается путаницы с выглядящими как ссылки простыми текстовыми строками.


Aliosque subditos et thema

 

Скриншоты под DOS

 

Для того, что бы сделать скриншоты в DOS есть несколько программ. Например, SNARF. C использованием этого приложения удалось делать скриншоты в наибольшем числе случаев. Так же, качество скриншотов (файлы .BMP) сделанных SNARF оказывается самым лучшим среди протестированных программ: ScreenThief, VideoThief, FLIP, GRABBER, SNARF. Использование SNARF с установками по умолчанию простое, но имеется недостаток - SNARF всегда сохраняет скриншот в ту папку, в которой в текущий момент находится пользователь. Что может быть неудобно или неприемлемо. И нет никакого явного способа это изменить. Однако, есть обходной вариант. Изначальная идея найдена по этой ссылке. На основе чего получилось следующее: 1. SNARF [ Скачать ] 2. С помощью текстового редактора открыть файл SNARF.EXE в текстовом режиме, найти snarf000.bmp и зменить на s:scn000.bin 3. Создать командный файл, например S.BAT, в котором помимо строки запуска SNARF.EXE будет команда для создания псевдодиска S: для пути к папке, в которую будут сохраняться скриншоты при работе SNARF. Папка и путь к ней могут быть любые: C:\SOFT\SNARF.EXE SUBST S: C:\SCREENS\ 4. Запустить SNARF: S [или S.BAT] 5. Что бы сделать скриншот: Alt + S Будет два звуковых сигнала. Первый при начале и второй как знак успешного завершения процесса. После того, как скриншоты сделаны, нужно перейти в папку, куда они сохраняются и заменить расширение файлов с .BIN на .BMP SNARF - Freeware.

Распаковать несколько архивов

 

Распаковать с помощью unzip в командной строке Linux несколько zip-архивов в один каталог. Вопреки возможным ожиданиям, "unzip *.zip" работать не будет, *.zip необходимо взять в кавычки: unzip "*.zip" В архивах могут быть файлы с одинаковыми именами. Чтобы избежать перезаписи: unzip -B "*.zip" "Unzip -B" в процессе распаковки перезаписывает файлы с одинаковыми именами, но сохраняет их резервные копии. Новые имена для этих файлов создаются добавлением тильды ("~") в конец изначальных названий файлов. Если имеется расширение, то "~" добавляется после него. Если этого недостаточно, после тильды ("~") прибавляется уникальная последовательность цифр (до 5 знаков). "Unzip -B" не слишком рабочее решение. Например, поскольку диапазон последовательностей цифр может израсходоваться (99999 знаков, или 65535 для 16-битных систем), резервный файл с максимальным числом диапазона после "~" в названии стирается и замещается без уведомления новой резервной копией ( Более подробно ). Число файлов в архиве может быть не всегда известно заранее или оно может быть больше диапазона доступных чисел, так что "Unzip -B" не лучший вариант. Переименование файлов с одинаковыми именами с помощью добавления "~" в конце имен, после расширения тоже не слишком удобно. Но другой встроенный вариант еще хуже. Если модификатор "-B" не используется, то каждый раз, как распаковывается файл с таким же именем как уже был извлечен, unzip спрашивает "replace example.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename:" ("заместить example.txt? да, нет, все, ни один, переименовать:"). Каждый раз нужно нажимать на "r" и каждый раз вводить новое имя. Так что для решения проблемы вероятно следует создать и использовать какой-то скрипт, bash или иной.