Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.137.217.134] |
|
Сообщ.
#1
,
|
|
|
Для соединения с саитом можно просто создать обьект URL и URLConnection.
А какие запросы надо реализовать, что бы получить список всех страниц(адреса) и их размер на этом саите? |
Сообщ.
#2
,
|
|
|
Просто так этого не сделать. Полного списка страниц на сайтах обычно не выкладывают. Нужно писать бота-"паука", который будет закачивать страницу, искать на ней ссылки, анализировать их и рекурсивно переходить на новые страницы.
|
Сообщ.
#3
,
|
|
|
А для поиска ссылок, что всю страничку надо качать?
|
Сообщ.
#4
,
|
|
|
Цитата Крон @ А для поиска ссылок, что всю страничку надо качать? Да |
Сообщ.
#5
,
|
|
|
это ж наверное получится долго и трафа много уйдет?
Входной поток с помощью .getInputStream это и есть страничка? |
Сообщ.
#6
,
|
|
|
Цитата Крон @ Входной поток с помощью .getInputStream это и есть страничка? Да. |
Сообщ.
#7
,
|
|
|
Цитата Крон @ это ж наверное получится долго и трафа много уйдет? Без сомнения. Я никогда и не видел быстрого веб-граббера. |
Сообщ.
#8
,
|
|
|
а размер странички как получить?
|
Сообщ.
#9
,
|
|
|
url.openConnection().getContentLength() Поток потом получать из URLConnection. Но этот способ не всегда будет работать - некоторые сервера могут давать информации о размере. |
Сообщ.
#10
,
|
|
|
Цитата Крон @ а размер странички как получить? GetContentLength()? Полагаю, что можно и из него, но надо учитывать, что этот метод возвращет значение HTTP-заголовка Content-Length, а не реальный размер. Поэтому может быть несовпадение. |
Сообщ.
#11
,
|
|
|
Не если искать ссылки просто и рекурсивно в них входить, то получится переход и ина др. ресурс, ведь?
А нодо вель только странички этого саита. |
Сообщ.
#12
,
|
|
|
Цитата Крон @ А нодо вель только странички этого саита. Так вы проверяйте ссылки. |
Сообщ.
#13
,
|
|
|
Вы не могли бы пример соединения написать и получения первой ссылки
|
Сообщ.
#14
,
|
|
|
Пример чтения есть тут: http://java.sun.com/docs/books/tutorial/ne...ingWriting.html
Парсинг на предмет ссылок можно либо выполнять вручную, либо поискать готовые библиотеки. Название не помню, но такие точно есть (что-то вроде HTMLParser). |
Сообщ.
#15
,
|
|
|
А как можно проверить ссылки?
Т.е. есть массив УРЛэвов, и еще один УРЛ. Что бы проверить ссылка ли это на внутрении ресурс надо проверить начинается ли каждый из элементов массива с главного УРЛ? А как это реализовать можно? В строку же конвертировать нельзя? |
Сообщ.
#16
,
|
|
|
Что именно нельзя конвертировать в строку? Как-то не верится.
Ссылка на внутренний ресурс скорее всего будет либо начинаться с того же имени домена, либо вообще будет относительной (без указания домена). Исключения составляют мегапорталы, распределенные по нескольким доменам, но такие ты навряд ли станешь выкачивать. |
Сообщ.
#17
,
|
|
|
Цитата batigoal @ Что именно нельзя конвертировать в строку? Как-то не верится. Ссылка на внутренний ресурс скорее всего будет либо начинаться с того же имени домена, либо вообще будет относительной (без указания домена). Исключения составляют мегапорталы, распределенные по нескольким доменам, но такие ты навряд ли станешь выкачивать. Можно воспользоваться классом URI. URL переводишь в URI, парсишь по зонам и уже сравниваешь зоны. Может быть поможет. |
Сообщ.
#18
,
|
|
|
А можно ли соединится с ресурсом расположенном локально на этой же машиине через URL обьект?
Что то типа getCodeBase что ли? |
Сообщ.
#19
,
|
|
|
Цитата Крон @ А можно ли соединится с ресурсом расположенном локально на этой же машиине через URL обьект? Можно. Цитата Крон @ Что то типа getCodeBase что ли? URL.getProtocol(), URL.getHost(), URL.getPort() |
Сообщ.
#20
,
|
|
|
Цитата wind @ url.openConnection().getContentLength() Поток потом получать из URLConnection. Но этот способ не всегда будет работать - некоторые сервера могут давать информации о размере. А если ответ не предусмотрен сервером, то как еще можно размер узнать? Считать число символов что ли? |
Сообщ.
#21
,
|
|
|
Цитата Крон @ А если ответ не предусмотрен сервером, то как еще можно размер узнать? Только полностью загрузив данные. |