Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Работа с сетью > Как получить содержимое веб страницы?


Автор: SuperOrange 4.7.2009, 22:29
Помогите пожалуйста, задача такая: даётся веб ссылка, мне необходимо получить количество и список ссылок на этой странице. Пока что получается вот что:
Код

    public static void main(String[] args) throws MalformedURLException, IOException {
        String S;
        try {
            if (args.length>0) {
                S=args[0].toString();
            } else {
                S="http://mail.ru:80";
            }
        } catch (Exception E) {
            S="http://mail.ru:80";
        }

        URL hp = new URL(S);
        System.out.println("Protocol:   " + hp.getProtocol());
        System.out.println("Port:       " + hp.getPort());
        System.out.println("Host:       " + hp.getHost());
        System.out.println("File:       " + hp.getFile());
        System.out.println("Ext:        " + hp.toExternalForm());
        URLConnection hpCon = hp.openConnection();
        hpCon.connect();
        System.out.println("Date:   " + new Date(hpCon.getDate()));
        System.out.println("Type:   " + hpCon.getContentType());
        System.out.println("Exp:    " + hpCon.getExpiration());
        System.out.println("Last M: " + hpCon.getLastModified());
        System.out.println("Length: " + hpCon.getContentLength());
        if (hpCon.getContentLength() > 0) {
            System.out.println("=== Content ===");
            InputStream input = hpCon.getInputStream();
            int i=hpCon.getContentLength();
            int c;
            while (((c = input. read()) != -1) && (--i > 0)) {
                System.out.print((char) c);
            }
            input.close();
        } else {
            System.out.println("No Content Available");
        }
    }


Проблема заключается в том что почему то не все ссылки обрабатываются. Выдаёт
Код

D:\>java MainProject http://forum.vingrad.ru/faq/act-Post/CODE-00/f-104/syntax-java.html
Protocol:   http
Port:       -1
Host:       forum.vingrad.ru
File:       /faq/act-Post/CODE-00/f-104/syntax-java.html
Ext:        http://forum.vingrad.ru/faq/act-Post/CODE-00/f-104/syntax-java.html
Date:   Sat Jul 04 22:28:23 EEST 2009
Type:   text/html; charset=UTF-8
Exp:    1246742903000
Last M: 0
Length: -1
No Content Available

Подскажите в чём проблема и что делать ? 
Заранее спасибо.

Автор: MisterCleric 6.7.2009, 10:24
Не знаю в чем суть твоей задачи. Но я в свое время колупал в сторону:
http://java-source.net/open-source/html-parsers
Для решения задачи получения курса валют с сайта НБУ, так как он не предоставляет такового серсива  smile 

И выбрал либу 
http://java-source.net/open-source/html-parsers/cobra-0.95.1
Очень удобный инструмент для вызова сайтой и парсинга их содержимого.
В твоем случае надо колупать в сторону JavaScript:
Код

document.getElementsByTagName("A");


И использовать эту конструкцию в java-коде.

Или мож я не так понял вопроса?

Автор: LSD 6.7.2009, 11:35
Сервер не всегда корректно отдает ContentLength, так что лучше на него забить и просто читать данные пока не получшь -1.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)