Что нового

[Автоматизация] Скачать все html страницы определённого сайта, а потом их обработать

  • Автор темы Pavluha
  • Дата начала
P

Pavluha

Гость
Здравствуйте. Есть один сайтик, с которого мне нужно скачать все хтмл страницы (рисунки, скрипты и прочее меня не интересует). Я бы это сделал бы вручную, да вот страниц там около 300 штук и ждать в браузере 20 секунд, пока каждая загрузится с оформлением...

Если не сложно, то напишите примерный код или скажите куда копать, чтобы это сделать. А обработку я сам как-небудь напишу.
 

Trans

Новичок
Сообщения
257
Репутация
6
Pavluha
Вот вам такой пример
Код:
#include<IE.au3>
#include <File.au3>

$Host="http://autoit-script.ru/"
$oIE=_IECreate($Host)
for $i=001 To 300
	$File=FileOpen($i&'page.html',9)
	_IENavigate($oIE,$Host&'page'&$i&'.html')
	FileWriteLine($File,_IEBodyReadHTML($oIE))
Next
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 119
Репутация
2 319
AZJIO [?]
Для этого есть готовые программы
Для многих задач тут на форуме есть готовые программы, так может забудем про AutoIt? :smile:

Этот форум как и создан чтобы помогать подобным рутинным задачам, а не для того чтобы подсказывать какие есть для этого программы, это задача Googl'а если на то пошло.
 
АТ
P

Pavluha

Гость
Trans
если бы всё так было просто, то я не писал эту тему.

телепорт не подходит, как и другой подобный софт. мне нужны оригиналы, а не с изменёнными линками на свои. вот если бы он ничего не менял в файлах, то было бы норм. хотя... нет. тут я не досмотрел: сайтов может быть много и очень много (замучаюсь телепорт открывать и вбивать). короче - только автоит
 

AZJIO

AutoIT Гуру
V.I.P
Сообщения
2 748
Репутация
1 145
CreatoR
Да я это знаю, но многим ровно на чём написан софт, а повторить к примеру Photoshop не всегда есть время. Тем более в разделе новичков заказ на софт, а не попытка разобрать предложенный пример.

Pavluha [url_ex=javascript:qq.OpenLink('http://autoit-script.ru/index.php/topic,12999.msg83368.html#msg83368')][?][/url_ex]
мне нужны оригиналы
Оно как бы всё настраиваемо.

По алгоритму есть функции InetGet, InetRead. Загрузка страницы, обработка HTML-кода регулярным выражением для поиска всех ссылок, далее отфильтровать только дочерние ссылки от текущего адреса, далее занести ссылки в массив и каждый раз проверять очередную партию ссылок со страницы, что они отсутствуют в массиве, чтобы не перекачивать повторно.
 
АТ
P

Pavluha

Гость
завтра попробую что-небудь написать сам. если будут вопросы -- напишу.

пока только 1 вопрос по функциям: InetRead работает около 10 секунд для каждой страницы (хотелось бы как-небудь сократить время), а InetGet вообще почему-то отказывается работать (возвращает ноль и всё).
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 318
Pavluha [?]
InetRead работает около 10 секунд для каждой страницы (хотелось бы как-небудь сократить время), а InetGet вообще почему-то отказывается работать (возвращает ноль и всё).
Код где?
 
АТ
P

Pavluha

Гость
madmasles [url_ex=javascript:qq.OpenLink('http://autoit-script.ru/index.php?topic=12999.msg83373#msg83373')][?][/url_ex]
Код:
$sURL = 'http://google.ru/'

$sFile = InetGet($sURL)

ConsoleWrite ($sFile)


[br][br]Добавлено:
Сообщение автоматически объединено:

wget хорошая прога, только если страница использует gzip сжатие, то она возвращает начальную страницу и всё.
[br][br]Добавлено:
Сообщение автоматически объединено:

И ещё: в этой проге есть ключ -R , который можно использовать для того, чтобы не загружать, к примеру, картинки или скрипты. А как сделать так, чтобы прога не качала И картинки, И скрипты, и XML-документы и т. д.

Если я пишу в батнике так:

Код:
wget.exe -r -l25 -R «*.js» «*.css» «*.rss» «*.xml» http://goodsite.com/
то прога думает, что «*.css» «*.rss» «*.xml» это домены. А как сделать так, чтобы прога всё правильно поняла?
[br][br]Добавлено:
Сообщение автоматически объединено:

всё, понял:

Код:
wget.exe -r -A *.html http://goodsite.com/
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 318
Предупреждение За нарушение правил форума (пункт В.11):[br]
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
(подробнее), а обычный код соответственно в тег [code]
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.
[br][br]С уважением, ваш Модератор.
 
АТ
P

Pavluha

Гость
ок, счас исправлю
[br][br]Добавлено:
Сообщение автоматически объединено:

всё, исправлено.
 
Верх