Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Teleport'оподобные проги Добавлено: 07.10.04 11:24  

Автор вопроса:  Павел | Web-сайт: www.vbnet.ru | ICQ: 326066673 
Кто-нибудь делал сайтокачалки по типу Телепорта?

Юзеры просят в наш wwwbyemail-сервис
(http://all4web.vbnet.ru/?p=wwwbyemail) внедрить такую фичу.
Я вот пораскинул мозгами, думаю, что это будет не слишком просто, в
плане мелочей...
Хочу парсинг HTML для выдирания ссылок сделать через регулярные
выражения, и соответственно рекурсивно качать/парсить/сохранять
страницы и связанные с ними файлы... Причем желательно многопоточно,
чтоб быстрее это проходило.

Если подобное кто-то уже делал, то хотелось бы посоветоваться насчет
реализации...

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
  j3d1



ICQ: 8370005 

Вопросов: 34
Ответов: 466
 Профиль | | #1 Добавлено: 07.10.04 16:00
1) Сохрани один раз всё а потом сканируй только изменённые файлы, будет быстрее в последующей работе.
 
 нужна только два потока при парсе(просмотр хтмл\скачка их) и скачке, скачка в нескольких потоках почти ни чего не даст.

2) парсировать страницы , затем назначить задание гетрайту(ригет, дап ....)

Ответить

Номер ответа: 2
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #2 Добавлено: 07.10.04 17:25
Я так понял что ты хочешь сделать качалку на ASP?

По ходу на planet-source я видел пример VB-шного контрола для ASP,
закачивающего сайт
Но я в этом сильно не уверен, т. к. эта ддянь у меня не заработала!

А если не секрет, как ты получаешь HTML код страницы из ASP
В смысле каким методом его закачиваешь

Ответить

Номер ответа: 3
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #3
Добавлено: 07.10.04 18:29
Ну я вобщем-то пару суток посидел и написал вполне работающий код.
Значит, дело было так...

Качается главная страница
Парсится на предмет нахождения ссылок, картинок, стилей, скриптов и
т.д. (в этом ппроцессе также все ссылки в исходном HTML заменяются на локальные).
Найденные файлы заносятся в коллекцию (в структуре file есть поля URL,
LocalPath, Name)

Далее цикл... {
Качается текущий файл из коллекции
Парсится на предмет поиска файлов с поиском совпадений в уже имеющемся
списке (в этом ппроцессе также все ссылки в исходном HTML заменяются
на локальные).
Найденные файлы добавляются в конец массива
Счетчик переводится на 1 вперед
Проверяются условия:
- Пройден весь массив
- Достигнут конец уровня ссылок (тогда инкрементируется счетчик уровня
ссылок, устанавливается номер последнего файла в новом уровне)
- Достингут предел уровней ссылок
- Достингут предел размера сайта
- Кончились деньги на счету пользователя :)
}

Теперь получаем список нескачанных по каким-то причинам файлов (у
которых LocalPath=Nothing)
Проходимся в цикле по всем скачанным файлам и заменяем в них локальные
ссылки на нескачанные абсолютными URL.

Сжимаем сайт ZIP'ом
Удаляем временные файлы
Отдаем ZIP клиенту



> скачка в нескольких потоках почти ни чего не даст
Есть медленные сайты, а есть быстрые, а есть загруженные, когда скачка
в нескольких потоках в принципе быстрее. В любом случае многопоточная
скачка сильно ускорит работу.
А вот как раз при парсинге многопоточность нафик не нужна.

> затем назначить задание гетрайту
Какой на веб-сервере GetRight? :)

> Я так понял что ты хочешь сделать качалку на ASP?
ASP .NET

> По ходу на planet-source я видел пример VB-шного контрола
Не люблю пользовать чужие глючные компоненты. Почти все, что могу,
пишу сам. Даже HTTP-клиент сам сделал.

> В смысле каким методом его закачиваешь
Написал свой класс, работающий с HTTP и FTP серверами напрямую.

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 07.10.04 23:08
Что-то у меня, кажись, валялся чей-то пример на эту тему, если не забуду поискать и найду, то свистну ;)

Ответить

Номер ответа: 5
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #5
Добавлено: 08.10.04 09:21
Не, спасибо, примеров не надо :) Просто хотелось насчет концепции
посоветоваться... Но я уже все сделал, уже получил один радостный
отзыв, что все работает :)
Сейчас только сменить логику парсинга HTML надо... Вместо самопальных
регэкспов буду использовать MSHTML. Так проблем меньше будет.

Ответить

Номер ответа: 6
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #6
Добавлено: 08.10.04 11:45
Ну как хочешь ;)

Ответить

Номер ответа: 7
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #7 Добавлено: 08.10.04 12:29
Павел, а не мог бы ты на zagzag@xaker.ru скинуть свой HTTP-клиент если он на
VB написан? PLZ!

> Не люблю пользовать чужие глючные компоненты.
Там его (контрола) исходник есть. Я тоже чужие контролы (которые
компилированы) не люблю!


Ответить

Номер ответа: 8
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #8
Добавлено: 08.10.04 12:42
Он на VB .NET.

Ответить

Номер ответа: 9
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #9 Добавлено: 08.10.04 13:16
О! А можно ставить VB.Net без установки SP1 для IE?
А то он английский и вся винда при установке тоже "переводится" :)
У меня есть VS.Net 2003 и отдельно VB.Net но у обоих такая проблема :(

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам