Страница: 1 |
Страница: 1 |
Вопрос: Teleport'оподобные проги
Добавлено: 07.10.04 11:24
Автор вопроса:
Павел | Web-сайт:
Кто-нибудь делал сайтокачалки по типу Телепорта?
Юзеры просят в наш 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-сайт:
Профиль | | #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-сайт:
Профиль | | #4
Добавлено: 07.10.04 23:08
Что-то у меня, кажись, валялся чей-то пример на эту тему, если не забуду поискать и найду, то свистну
Номер ответа: 5
Автор ответа: Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #5
Добавлено: 08.10.04 09:21
Не, спасибо, примеров не надо
Просто хотелось насчет концепции
посоветоваться... Но я уже все сделал, уже получил один радостный
отзыв, что все работает
Сейчас только сменить логику парсинга HTML надо... Вместо самопальных
регэкспов буду использовать MSHTML. Так проблем меньше будет.
Номер ответа: 6
Автор ответа: sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #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-сайт:
Профиль | | #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 но у обоих такая проблема