|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Парсинг HTML |
|
|
CMD/BAT - Парсинг HTML
|
Старожил Сообщения: 192 |
Профиль | Отправить PM | Цитировать
Будьте любезны, подскажите мне как "вытащить" нужные мне части из HTML и поместить их в переменные для дальнейшего использования. Вот часть кода HTML:
Интересуют соответственно следующие присваивания: security_token = kYuaS/i/YsUp9TzXrRg7NOzaIUy4+auW7k73RNkl1ts= и login_ticket = c3b03122aa536e1440bb0091e2dba5f4 Следующей командой я сужаю поиск до тэгов: FOR /F "tokens=2,4 delims=<>" %%A IN ('FIND /I "security_token" index.php') А вот что с этим делать, у меня разобраться не получается. Попытка присвоения а ля DO SET SECTOKLINE = %%A во первых почему-то не совершает присваивания, а во-вторых не обрабатывает второй токен (который, как мне понятно находится в %B) Ох, а потом ведь ещё придётся переводить спецсимволы в переменной security_token в percent‐encoding, т.е. заменять / на %2F, + на %2B и = на %3D. Это вообще реально? |
|
Отправлено: 16:50, 24-09-2012 |
Новый участник Сообщения: 15
|
Профиль | Отправить PM | Цитировать Smasher,
CMD/BAT принципиален? Для парсинга HTML придуманы браузеры, которыми удобно управлять, например, с помощью скриптовых языков. |
Отправлено: 17:08, 24-09-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 192
|
Профиль | Отправить PM | Цитировать Дело в том, что всё это делается ради того, чтобы совершить WGET'ом авторизацию на одном сайте таким образом:
А это в свою очередь делается для того чтобы опять-таки WGET'ом вызвать страницу, к которой без авторизации доступа нет. А точнее сделать несколько вызовов в течении 5 секунд. |
Отправлено: 17:37, 24-09-2012 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Smasher, всё равно без загрузки страницы с формой и последующего разбора посредством DOM не обойтись. Проще всего это сделать на WSH или PoSH. Страница с формой доступна в глобальной сети?
|
Отправлено: 18:20, 24-09-2012 | #4 |
Старожил Сообщения: 192
|
Профиль | Отправить PM | Цитировать Iska, ну так я и загружал первым делом страницу с формой, а потом уже пытался её разобрать. Вообщем, мне неважно какими средствами это сделать, лишь бы достичь вышеуказанной цели. Если говорить ещё конкретнее, мне нужно в определённое время сделать короткий флуд по адресу https://studip.fh-trier.de/sem_verif...m_p ortal.php
Ну чтобы без криминала, например, в течении 10 секунд 20 вызовов. Почему-то первым в голову пришло написать батник с использованием wget. Страница с формой соответственно находится по адресу studip.fh-trier.de |
|
Отправлено: 20:13, 24-09-2012 | #5 |
Ветеран Сообщения: 1757
|
Smasher, С помощью голого батника универсального решения нет, кто знает какие символы содержат значения.
На примере твоего index.php: @echo off setlocal for /f "tokens=*" %%i in ('findstr "security_token login_ticket" index.php') do set string="%%i" set "string="%string:<=%"" set "string="%string:>=%"" set "string=%string:"=%" for /f "tokens=4,8" %%i in ('set string') do call:1 "%%i" "%%j" echo %security_token_value% echo %login_ticket_value% goto:eof :1 set "security_token_%~1" set "login_ticket_%~2" |
Отправлено: 21:09, 24-09-2012 | #6 |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать for /f "tokens=2,4 delims=<>" %%I in ('find /I "security_token" index.php') do ( for /f "usebackq tokens=4,5,7 delims== " %%K in ('%%I') do if "%%K"=="name" set %%~L=%%~M for /f "usebackq tokens=4,5,7 delims== " %%K in ('%%J') do if "%%K"=="name" set %%~L=%%~M ) echo security_token="%security_token%" echo login_ticket="%login_ticket%" |
Отправлено: 21:12, 24-09-2012 | #7 |
Старожил Сообщения: 192
|
Профиль | Отправить PM | Цитировать Bob256, неплохая идея, но у security_token "съедается" последний символ, т.е. знак равенства.
Foreigner, работает, спасибо! Сейчас постараюсь разобраться, что там наколдовано Ещё бы для security_token сделать перевод спецсимволов в URL-кодировку (см. первый пост) |
Отправлено: 21:18, 24-09-2012 | #8 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Iska, любопытно посмотреть на решение с помощью DOM-технологии.
Но мне кажется что удобнее использовать утилиты типа sed и awk. Например, с помощью sed эта задача решается в полторы строчки: голый батник не рекомендую использовать, ввиду подножек из спецсимволов. |
Отправлено: 21:34, 24-09-2012 | #9 |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать |
Отправлено: 21:55, 24-09-2012 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Парсинг XML/TXT | mxm199 | Скриптовые языки администрирования Windows | 10 | 17-07-2012 12:34 | |
Java - Парсинг doc-файла | Hector | Программирование и базы данных | 7 | 15-03-2012 21:37 | |
CMD/BAT - Парсинг | Чин Хон | Скриптовые языки администрирования Windows | 1 | 04-02-2011 13:51 | |
Delphi - Парсинг | Miko | Программирование и базы данных | 7 | 27-09-2010 10:46 | |
Парсинг PR | venuko | Вебмастеру | 3 | 13-01-2010 14:15 |
|