![]() |
Поиск в html файле ip адресов и копирование их в новый txt.
Приветствую всех! Задача такая: мне на ftp приходят много сохранённых web страниц (другие пользователи в своём браузере сохраняют интернет страницу ко мне на ftp), эти страницы содержат списки ip адресов. Я не могу додуматься, как мне реализовать "вырезание" этих ip-шников в новый текстовый документ. Знаний никаких в этой области. Подробнее: имеется сохранённая html страница (со всеми картинками, стилями и скриптами), просматриваемая в оффлайн режиме, для меня важен лишь html файл, при открытии которого в блокноте, в теле, среди множества тегов и кучи ненужного мусора, имеется списочек ip адресов. Необходимо эти ip адреса перенести в текстовый документ. На странице количество ip адресов может варьироваться. В добавок перед и после ip-шников может не быть пробелов, а сразу начинается текст (всё слитно). Получается некий граббер ip списка. Конечный txt файл должен содержать список ip адресов в столбец построчно. Использование сторонних программ не представляется возможным, так как другие пользователи удалённо заходя в ftp папку будут запускать батник. Помогите реализовать данный проект, если средствами windows это возможно.
|
666egor666, если не выложите архив с образцами сохранённых веб-страниц, никакого конкретного ответа не получите:(.
|
WSH, PoSH, AutoIt и т.п. плюс регулярное выражение для поиска и извлечения ip-адреса.
|
Вложений: 1
Georgio, страницы могут быть абсолютно разными, это что то вроде если открыть любую интернет страницу и не раздумывая в любое место просто вставить ip-шник. Ну для примера прикрепляю файлик html, это поле информации статуса моего роутера. Там как раз присутствуют несколько ip-шников, и они не разделены пробелами от текста и символов (в моём файле некоторые ip с двойными ковычками, но это может быть и текст)
|
Возможно ли справиться с данной задачей, например, поиском по маске *.*.*.* или что то в этом роде? Эта маска характеризует любой ip, может быть как то можно искать данное сочетание?
|
Код 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' |
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}))?)*" |
Цитата:
Ужас:)! Но главное в коде -- это верный принцип. Кстати, и от ненужных точек (возможно, и цифр) в выводе (перед и после самого IP) код не застрахован. Надо было ещё "триммить". |
Цитата:
В принципе работает, даже с некоторым перебором (скажем, для него в строке «556.56.56.56» будет таки найден ip-адрес «556.56.56.56» — не знаю, стоит ли считать данный выбор «искать любое, что подходит» идеологически корректным). |
Georgio, Огромное Спасибо! Скрипт на 100% выполняет задачу. Ну а запуск скрипта powershell у других пользователей не проблема ( заметка для других пользователей, интересующихся этой темой: Win+r, powershell.exe, Set-ExecutionPolicy RemoteSigned. Эти действия дают права запуска собственно созданных скриптов).
|
И ещё небольшая заметка для пользователей: предложенный скрипт Georgio составляет список ip по возрастанию начальной цифры ip, т.е. сначала идут ip, которые начинаются на 1, далее те, которые начинаются на 2 и т.д.
|
Время: 21:29. |
Время: 21:29.
© OSzone.net 2001-