Войти

Показать полную графическую версию : [решено] Поиск в html файле ip адресов и копирование их в новый txt.


666egor666
30-04-2015, 12:21
Приветствую всех! Задача такая: мне на ftp приходят много сохранённых web страниц (другие пользователи в своём браузере сохраняют интернет страницу ко мне на ftp), эти страницы содержат списки ip адресов. Я не могу додуматься, как мне реализовать "вырезание" этих ip-шников в новый текстовый документ. Знаний никаких в этой области. Подробнее: имеется сохранённая html страница (со всеми картинками, стилями и скриптами), просматриваемая в оффлайн режиме, для меня важен лишь html файл, при открытии которого в блокноте, в теле, среди множества тегов и кучи ненужного мусора, имеется списочек ip адресов. Необходимо эти ip адреса перенести в текстовый документ. На странице количество ip адресов может варьироваться. В добавок перед и после ip-шников может не быть пробелов, а сразу начинается текст (всё слитно). Получается некий граббер ip списка. Конечный txt файл должен содержать список ip адресов в столбец построчно. Использование сторонних программ не представляется возможным, так как другие пользователи удалённо заходя в ftp папку будут запускать батник. Помогите реализовать данный проект, если средствами windows это возможно.

Georgio
30-04-2015, 13:30
666egor666, если не выложите архив с образцами сохранённых веб-страниц, никакого конкретного ответа не получите:(.

Iska
30-04-2015, 15:30
WSH, PoSH, AutoIt и т.п. плюс регулярное выражение для поиска и извлечения ip-адреса.

666egor666
30-04-2015, 19:36
Georgio, страницы могут быть абсолютно разными, это что то вроде если открыть любую интернет страницу и не раздумывая в любое место просто вставить ip-шник. Ну для примера прикрепляю файлик html, это поле информации статуса моего роутера. Там как раз присутствуют несколько ip-шников, и они не разделены пробелами от текста и символов (в моём файле некоторые ip с двойными ковычками, но это может быть и текст)

666egor666
30-04-2015, 19:41
Возможно ли справиться с данной задачей, например, поиском по маске *.*.*.* или что то в этом роде? Эта маска характеризует любой ip, может быть как то можно искать данное сочетание?

Georgio
01-05-2015, 15:37
Код PowerShell: (gc 'StatusRpm.html') -replace '[^0-9\.]',' ' -split ' ' -match '[1-9][0-9]{0,2}(\.[0-9]{1,3}){3}'|sort -Unique|Out-File 'IP.txt'.

Iska
01-05-2015, 18:44
Georgio, токмо шаблон не нравится. Попадался мне такой:
"(((1\d{2})|(2[0-4]\d)|(25[0-5])|\d{1,2})\.){3}((1\d{2})|(2[0-4]\d)|(25[0-5])|\d*​{1,2})(\-((1\d{2})|(2[0-4]\d)|(25[0-5])|\d{1,2}))?(,(((1\d{2})|(2[0-4]\d)|(25[0-5*​])|\d{1,2})\.){3}((1\d{2})|(2[0-4]\d)|(25[0-5])|\d{1,2})(\-((1\d{2})|(2[0-4]\d)|(*​25[0-5])|\d{1,2}))?)*"

Georgio
01-05-2015, 20:01
Попадался мне такой: <...> »


Ужас:)!

Но главное в коде -- это верный принцип.

Кстати, и от ненужных точек (возможно, и цифр) в выводе (перед и после самого IP) код не застрахован. Надо было ещё "триммить".

Iska
02-05-2015, 00:07
Ужас! »
Ага ;). Я плюнул и даже не стал разбираться детально.

В принципе работает, даже с некоторым перебором (скажем, для него в строке «556.56.56.56» будет таки найден ip-адрес «556.56.56.56» — не знаю, стоит ли считать данный выбор «искать любое, что подходит» идеологически корректным).

666egor666
02-05-2015, 13:06
Georgio, Огромное Спасибо! Скрипт на 100% выполняет задачу. Ну а запуск скрипта powershell у других пользователей не проблема ( заметка для других пользователей, интересующихся этой темой: Win+r, powershell.exe, Set-ExecutionPolicy RemoteSigned. Эти действия дают права запуска собственно созданных скриптов).

666egor666
02-05-2015, 19:46
И ещё небольшая заметка для пользователей: предложенный скрипт Georgio составляет список ip по возрастанию начальной цифры ip, т.е. сначала идут ip, которые начинаются на 1, далее те, которые начинаются на 2 и т.д.




© OSzone.net 2001-2012