Что нового

InetGet. Как можно ускорить скачивание страниц?

Suppir

Продвинутый
Сообщения
967
Репутация
62
Добрый день!

Хочу скачать для экспериментов базу данных ДубльГис по Краснодару. Пишу:

Код:
for $i = 1 to 170000
   InetGet("http://catalog.2gis.ru/krasnodar/i" & $i, $i & ".html")   
Next


Но при этом скачивается всего одна страница в секунду. Если страниц 170 тыс., то можете представить на сколько дней это растянется. Пробовал запускать несколько программ для скачивания одновременно - но скорость остается той же. Как думаете, можно ли ускорить скачивание страниц?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Suppir [?]
Если страниц 170 тыс., то можете представить на сколько дней это растянется
а что тут представлять? :smile: двое суток качаться будет.

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


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

единственное, что могу предложить – качать в фоном режиме пропустив проверку на соединение.
Код:
for $i = 1 to 170000
   InetGet("http://catalog.2gis.ru/krasnodar/i" & $i, $i & ".html", 16 + 1, 1 )  
Next
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
Kaster [?]
тогда, я полагаю, это твоя скорость соединения.

У меня 20 Мбит в секунду, а качает со скоростью 10 кбайт в секунду. Т.е. скорость соединения позволяет все страницы за час скачать.


единственное, что могу предложить – качать в фоном режиме пропустив проверку на соединение.

нужно попробовать, спасибо.


p.s. Классный аватар ;)



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

Я думаю, что сервер, на котором расположен сайт сам ограничивает скорость. Но если обратиться к нему в несколько потоков с разных IP, то может получиться быстрее скачать. Только не вполне представляю, как это организовать (что-то вроде DDOS-атаки?). Может быть есть интернет-служба, которая быстро выкачивает сайты, не знаю.


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

Ладно, поставлю на ночь качать. За выходные, думаю, успею :smile:
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Создай список страниц и скорми его какой-нибудь качалке(вроде флешгета).В 10 потоков за ночь возможно выкачается.
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
sngr
я сейчас пробовал с помощью teleportPro - нифига, видно, что качает не по порядку (в несколько потоков), но общая скорость та же. Скорее всего, скорость на самом сервере ограничена.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Suppir [?]
У меня 20 Мбит в секунду, а качает со скоростью 10 кбайт в секунду
20 мбит - это максимальная скорость заявленная провайдером. скорости скачивания как таковой без указания второго узла не существует. когда же второй узел указывается - это наз-ся скорость соединения. я про него и говорил. а вообще, 10 кб/c - это не скорость закачки. я выше писал, что для того чтобы начать качать ты долже как минимум инициализировать соединение, начать скачивать, записать на диск и завершить соединение. сам файл возможно качается быстро а все остальные манипуляции могут съедать время.
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
Kaster
Kaster сказал(а):
InetGet("http://catalog.2gis.ru/krasnodar/i" & $i, $i & ".html", 16 + 1, 1 )
Пробовал качать фоном - скорость такая же, только файлы не отображаются в директории до тех пор, пока скрипт не перестанет работать.
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
Да... Скачал весь сайт, оказалось, что данные там устарели на несколько месяцев! Зря качал :smile:
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Человек делал через Proxy сервера:
http://habrahabr.ru/post/140938/
Ключ 4
К четвертому видео, бот был доработан: сейчас он использует порядка 100 прокси серверов (по 1 потоку на каждый прокси сервер), которые сканируют каждые 5 секунд gdata. Тесты показали, что около 20 прокси просто мгновенно сообщают о выходе нового видео, остальные подтягиваются в течении минуты, это было отлично. В отличии от gdata прямые ссылки появляются сразу для любого IP, поэтому тут без прокси бот просто качает видео в 20 потоков (работало даже в 1000 потоков, youtube оказывается позволяет). Скорость закачки возросла. Алгоритм сканирования был доработан: бот вначале в 4 потока сканирует вторую часть ролика (во всех предыдущих видео серийный ключ появлялся в конце ролика), а потом в 4 потока первую часть. Для надежности шаг сканирования был уменьшен до 500 мс, другие параметры так же были немного ослаблены.

Итак, выскочил алерт, сообщающий о выходе нового видео. Не успел я зайти в battle.net как уже скачалось видео (10 секунд) и появился скриншот с серийным номером:
 
Верх