Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Помогите реализовать скачивание html страницы и поиск в ней

Ответить
Настройки темы
CMD/BAT - [решено] Помогите реализовать скачивание html страницы и поиск в ней

Новый участник


Сообщения: 36
Благодарности: 1

Профиль | Отправить PM | Цитировать


Подскажите пожалуйста, можно ли и как написать батник выполняющий такие действия:
первым действием идёт скачивание с помощью wget html страницы
wget -c -t 0 Http://sait.ru/452484 -O 452484.html
далее необходимо в скаченном html найти строку
<form action=d/цыфры/цыфры method=GET id="start_download_form">
скопировать из этой строки
d/цыфры/цыфры
и вставить в следующей строке вместо ХХХ
wget -c -t 0 Http://sait.ru/ХХХ -O Fail.avi

Отправлено: 17:10, 12-08-2010

 

Старожил


Сообщения: 426
Благодарности: 108

Профиль | Отправить PM | Цитировать


Пакетным файлом плохо обрабатывать текста, особенно такие как HTML... могут теги поползти еще на этапе чтения... тут что-то по-хитрее надо... в любом случае присоедините в аттач зазипованный пример HTMLки, попробуем...

-------
Как сказало Дерево Дровосеку: "я - пень".


Отправлено: 19:07, 12-08-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 36
Благодарности: 1

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: zip Primer.zip
(1.8 Kb, 14 просмотров)

Вот пример html страницы.
Также я приложил пример скрипта для nix с помощью bash ,только что то не работает или я неправильно делаю.
пробовал через cygwim

Отправлено: 19:27, 12-08-2010 | #3


Пользователь


Сообщения: 140
Благодарности: 92

Профиль | Отправить PM | Цитировать


alexmoreman,

Насчет *.bat - не та это задача, чтобы её решать методами CMD, поэтому предлагаю расположить wget в теле Vbsript:

Код: Выделить весь код
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = False
objIE.Navigate "F:\rem\Primer.html"
While objIE.Busy
    WScript.Sleep 200
Wend
Set tag = objIE.Document.getElementByid("start_download_form")
WScript.Echo tag.getAttribute("action") ' смотрим то ли?

Set WshShell = CreateObject("WScript.Shell")
Retval = WshShell.Run ("wget -c -t 0 Http://sait.ru/" & _
tag.getAttribute("action") & "-O Fail.avi", 1, True)
WScript.Echo "Команда выполнена! Код возврата: " & Retval
objIE.Quit
или процедура скачивания полностью на VBS (замена wget):
Код: Выделить весь код
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
StrTargetHtml = "Http://sait.ru/" & _
tag.getAttribute("action") & "/" & "Fail.avi"

oXMLHTTP.Open "GET", StrTargetHtml, 0

oXMLHTTP.Send
Set oADOStream = CreateObject("ADODB.Stream")
oADOStream.Mode = 3
oADOStream.Type = 1
oADOStream.Open
oADOStream.Write oXMLHTTP.responseBody
oADOStream.SaveToFile "F:\DL\Fail.avi", 2
WScript.Echo "Закачка завершена"
____________________________________________________________________________________________________ _________________

PS: ознакомтесь с темой протестируйте скрипт для обновления утилит от Piriform (CCleaner,Defraggler и тд) в ней
предолагается решение похожей задачи средствами CMD - сделано граммотно и аккуратно, но слишком сложно
за счет отсутствия необоходимых алгоритмов в утилитах CMD.



Последний раз редактировалось deepred, 13-08-2010 в 00:31. Причина: + MSXML2.XMLHTTP

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:56, 12-08-2010 | #4


Новый участник


Сообщения: 36
Благодарности: 1

Профиль | Отправить PM | Цитировать


deepred,
спасибо это очень интересно! Я попробовал но увы почему то не идет и выходит ошибка

запускаю с батника так:
wget -c -t 0 Http://share-nn.ru/31032611 -O Primer.html
start script.vbs
Насчет этого в твоём скрипте F:\rem\Primer.html я так понимаю полный путь к файлу?

причина задаться этой проблемои была, в жадности данного хранилища относительно моего провайдера.
вот и приходится wgetом долбиться по ссылкам от 10 до 30 раз для получения как страницы так и файла.
для подобной цели я себе создал 2 .bat
1. wget -c -t 0 Http://sait.ru/452484 -O 452484.html
после скачивания страницы я открываю её и копирую во второй .bat ссылку на файл и его название:
2. wget -c -t 0 Http://sait.ru/d/452484856/765890 -O название файла.avi
поэтому и хочеться этот процесс оптимизировать и не вписывать ссылку на файл вручную.

Последний раз редактировалось alexmoreman, 13-08-2010 в 01:18. Причина: дополнить


Отправлено: 00:38, 13-08-2010 | #5


Пользователь


Сообщения: 140
Благодарности: 92

Профиль | Отправить PM | Цитировать


alexmoreman,

Цитата alexmoreman:
выходит ошибка »
Цитата alexmoreman:
строка: 11
символ: 23
»
странная ошибка, у меня всё страбатывает как надо, попробуйте снова скопировать код с форума
и вставить в блокнот (а лучше akelpad).

Как вариант попробуйте изменить определение Retval:
Код: Выделить весь код
Retval = WshShell.Run ("cmd /c wget -c -t 0 Http://sait.ru/" & _
tag.getAttribute("action") & "-O Fail.avi", 0, True)
Цитата alexmoreman:
F:\rem\Primer.html я так понимаю полный путь к файлу? »
- да, полный путь...
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:02, 13-08-2010 | #6


Новый участник


Сообщения: 36
Благодарности: 1

Профиль | Отправить PM | Цитировать


deepred,
спасибо огромное тебе! теперь наконец то стало определятся точто вроде нужно.(и в вчерашнем скрипте и с поправками)

но остаются "но" после нажатия OK не запускается wget (не видно работы кансоли(может ты высталил скриптом в тихом режиме?)) и через промежуток выходит это сообщение

все файлы (.bat ,.vbs,.wget.exe) лежат в одной папке

Отправлено: 13:57, 13-08-2010 | #7


Пользователь


Сообщения: 140
Благодарности: 92

Профиль | Отправить PM | Цитировать


alexmoreman,

WshShell.Run ("cmd /c wget -c -t 0 Http://sait.ru/" & _
tag.getAttribute("action") & "-O Fail.avi",
0, True)
0 - отвечает за скрытый режим (для видимости консольного окна выставьте "1")

Закачка-то происходит?
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:10, 13-08-2010 | #8


Новый участник


Сообщения: 36
Благодарности: 1

Профиль | Отправить PM | Цитировать


в том то и дело что не происходит
он через раз ошибку выдает и вот сейчас присоединяет к ссылке -0 (в wget)
Http://share-nn.ru/d/10189263/453382-0
точнее не ноль а букву o
------
dвсё решил. поиграл с пробелами(убрал букву о)
а возможен вариант без нажатия ОК?
-----
блин накаркал, прошло в качалке 3 попытки соединится и прикрывается с окном "команда выполнена! Код возврата: 1"

Последний раз редактировалось alexmoreman, 13-08-2010 в 14:32.


Отправлено: 14:20, 13-08-2010 | #9


Пользователь


Сообщения: 140
Благодарности: 92

Профиль | Отправить PM | Цитировать


alexmoreman,

эти окна нужны только для контроля при тестировании сценария, для того чтобы от них
избавиться нужно закоментировать (поставить символ ' в начале) или удалить строки,
содержащие команды Wscript.Echo.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:36, 13-08-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Помогите реализовать скачивание html страницы и поиск в ней

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Поиск слова в исходном коде html страницы?????? klsorat2010 AutoIt 65 01-04-2013 07:34
[решено] Сохранение загруженной html-страницы Sestrichka AutoIt 12 12-11-2009 18:50
[решено] Работа с html-кодом страницы, поиск и копирование нужных строк Sestrichka AutoIt 14 02-04-2009 16:51
[решено] Поиск нужного текста в html коде страницы ph0en1x AutoIt 8 16-02-2009 02:38
[решено] перенос части страницы HTML на другую через DOM rus-4-ever Вебмастеру 1 29-10-2008 01:11




 
Переход