powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / распарсить страничку, вытянуть данные. HALP
25 сообщений из 32, страница 1 из 2
распарсить страничку, вытянуть данные. HALP
    #39182995
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

я нуб в яве. Хочу распарсить простую http://example.com/about.html#contacts и получить в процессе буковки строчками со странички в консоль. Нагуглил пару десятков разных примеров и слепил нечто, но оно не работает.

буду очень благодарен за наводящие подсказки и точечную отправку к нужному источнику.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
package MyPackage.MyTest1;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class TryToReadFromURL
{

    public static void main(String[] args) throws Exception
    {
        // Set the http proxy to webcache.mydomain.com:8080
        System.setProperty("http.proxyHost", "10.10.255.42");
        System.setProperty("http.proxyPort", "8080");

        //URL url = new URL("https://tv.yandex.ru/213?grid=main&period=now");
        URL url = new URL("http://example.com/about.html#contacts");

        System.out.println("Protocol: " + url.getProtocol());
        System.out.println("Port: " + url.getPort());
        System.out.println("Host: " + url.getHost());
        System.out.println("File: " + url.getFile());
        System.out.println("Ext: " + url.toExternalForm());
        System.out.println("User: " + url.getUserInfo());

        URLConnection urlCon = url.openConnection();
/*        System.out.println("Date: " + urlCon.getDate());
        System.out.println("Type: " + urlCon.getContentType());
        System.out.println("Exp: " + urlCon.getExpiration());
        System.out.println("Last M: " + urlCon.getLastModified());
        System.out.println("Length: " + urlCon.getContentLength());
  */
        
        BufferedReader reader = new BufferedReader(new InputStreamReader(urlCon.getInputStream()));

        String tmp = reader.readLine();
        while (!tmp.isEmpty())
        {
            System.out.println(tmp);
            tmp = reader.readLine();
        }

        System.clearProperty("http.proxyHost");
    }
}
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39183002
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
python
Код: python
1.
2.
3.
4.
5.
import urllib

uo = urllib.urlopen("http://example.com/about.html#contacts")
contacts = uo.read()
print contacts
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39183003
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfioНагуглил пару десятков разных примеров и слепил нечто, но оно не работает http://stackoverflow.com/questions/4328711/read-url-to-string-in-few-lines-of-java-code
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39183025
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grasoff.net,

а причем тут питон?
сайт stackoverflow.com действительно очень клевый, когда ты уже прожженный и искушенный кодер. но мне там многое не понятно, и возможности задать там вопрос не имею - ограничен интернет.

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

В общем, на примерах других у меня получается каша. Если можно, я хотел бы критики именно моего примера.
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39183115
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jsoup можно попробовать:
Код: java
1.
2.
3.
String html = "<p> <span> foo </span> <em> bar <a> foobar </a> baz </em> </p>";
Document doc = Jsoup.parse(html);
System.out.println(doc.text());
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39183183
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfioвариант, который там набрал макс. голосов мне не ясен - я не вижу куда введена ссылка. Так же мне среда говорит, что класса URLConnectionReader нет в ней (это если смотреть самый заплюсованный вариант).ссылка передаётся параметром командной строки
класс там есть

1. cd c:\
2. mkdir .\temp\urlreader
3. notepad.exe
4. [Ctrl + A] [Ctrl + C] [Ctrl + V] вот того самого примера
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
import java.net.*;
import java.io.*;

public class URLConnectionReader {
    public static String getText(String url) throws Exception {
        URL website = new URL(url);
        URLConnection connection = website.openConnection();
        BufferedReader in = new BufferedReader(
                                new InputStreamReader(
                                    connection.getInputStream()));

        StringBuilder response = new StringBuilder();
        String inputLine;

        while ((inputLine = in.readLine()) != null) 
            response.append(inputLine);

        in.close();

        return response.toString();
    }

    public static void main(String[] args) throws Exception {
        String content = URLConnectionReader.getText("http://lenta.ru/");
        System.out.println(content);
    }
}



5. Save as c:\temp\urlreader\URLConnectionReader.java
6. javac URLConnectionReader.java
7. java URLConnectionReader
8. и получаешь в процессе буковки строчками со странички в консоль
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39183184
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfioа причем тут питон?java не очень хороший язык для обучения
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39183313
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grasoff.net,
спасибо, я попробую.
а почему не очень хорош для обучения? у меня по ходу обучения пока что все получалось :/
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39183315
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.netpython
Код: python
1.
2.
3.
4.
5.
import urllib

uo = urllib.urlopen("http://example.com/about.html#contacts")
contacts = uo.read()
print contacts



+1
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39183322
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfioа почему не очень хорош для обучения?
видимо у кого-то вызывает трудности
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39183323
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на питоне очень здорово на коленке прототипы делать или мелкие утилиты,
которые можно хоть в консоли python, запускать и отлаживать.

over 1000 библиотек и биндингов ко всему
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39183325
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfioу меня по ходу обучения пока что все получалосьну, вот с получением контента по ссылке не очень )
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39183445
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfioа почему не очень хорош для обучения?по статистике )
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39183463
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Существуют три вида лжи: ложь, наглая ложь и статистика ( С )
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39183799
namidp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй так -
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
public void getTextURL(String address) throws MalformedURLException, IOException {
        Authenticator authenticator = new Authenticator() {

            public PasswordAuthentication getPasswordAuthentication() {
                return (new PasswordAuthentication(PROXY_LOGIN,
                        PROXY_PSW.toCharArray()));
            }
        };
        Authenticator.setDefault(authenticator);

        URL url = new URL(address);
        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(PROXY_ADDRESS, PROXY_PORT));
        URLConnection c = url.openConnection(proxy);
        c.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
        StringBuilder sb;
        try (BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()))) {
            String s;
           
            while ((s = br.readLine()) != null) {

                System.out.println(s);

            }
        }
       
    }
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39184537
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grasoff.net,
спасибо! получилось благодаря вашему разъяснению. Только настройки прокси вставил еще, иначе нет подключения.


Ребят, вот знаете есть баян, про то, что на иностранных форумах задаешь ответ, и тебе пытаются сразу помочь, а на наших форумах, первые три скажут что тебе это не нужно, еще 5ро скажут что надо делать совсем не так или это бессмысленно, и только последний поможет, когда уже тема потеряет актуальность) это не про мой случай, конечно, но все же правда)

всем спасиба!))
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39185105
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ааа ребят ((

подключение то работает, но только для http://, а я хочу данные выгрести из https://

на stackoverflow пожалуйста не посылайте (
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39185119
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfioааа ребят ((

подключение то работает, но только для http://, а я хочу данные выгрести из https://

на stackoverflow пожалуйста не посылайте (
По HTTPS тоже будет работать, если на сервере валидный сертификат.
В противном случае надо сертификат качнуть самому и добавить в JKS, либо отключить валидацию SSL в HTTP вообще.
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39185128
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

вы не могли бы поподробнее немного? не силен в веб разработке пока.

1. где качнуть сертификат, и что такое JKS?
2. как отключить SSL в HTTP? и на чем, кроме работы консольной проги это скажется?
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39185138
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfio,

Вот такой грязных хак
http://stackoverflow.com/a/19723687
Влияет на всю JVM, если вы только свою консоль запускаете, то больше ни на что не повлияет.
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39185154
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
действительно, какая грязь )

ну а если серьезно, вы не могли бы мне как новичку немного больше воды дать?

Если я отключаю таким хаком (точнее меняю SSL на TLS), я типа перевожу трафик в незашифрованный? Т.е. если инфу тяну не конфиденциальную, то угрозы как бы нет, условно говоря. Верно?

В результате у меня вышел вот такой код
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
package MyPackage.MyTest1;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import javax.net.ssl.*;
import java.security.cert.X509Certificate;

public class TryToReadFromURL
{

    public static void main(String[] args) throws Exception
    {

        SSLContext sc = SSLContext.getInstance("TLS");
        sc.init(null, new TrustManager[] { new TrustAllX509TrustManager() }, new java.security.SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        HttpsURLConnection.setDefaultHostnameVerifier( new HostnameVerifier(){
            public boolean verify(String string,SSLSession ssls) {
                return true;
            }
        });
        // Set the http proxy to webcache.mydomain.com:8080
        System.setProperty("http.proxyHost", "10.10.255.42");
        System.setProperty("http.proxyPort", "8080");
        System.setProperty("https.proxyHost", "10.10.255.42");
        System.setProperty("https.proxyPort", "8080");

        URL url = new URL("https://tv.yandex.ru/213?grid=main&period=now");
        //URL url = new URL("http://www.codecrete.net/UnwrapIt");

        System.out.println("Protocol: " + url.getProtocol());
        System.out.println("Port: " + url.getPort());
        System.out.println("Host: " + url.getHost());
        System.out.println("File: " + url.getFile());
        System.out.println("Ext: " + url.toExternalForm());
        System.out.println("User: " + url.getUserInfo());

        URLConnection urlCon = url.openConnection();
        System.out.println("Date: " + urlCon.getDate());
        System.out.println("Type: " + urlCon.getContentType());
        System.out.println("Exp: " + urlCon.getExpiration());
        System.out.println("Last M: " + urlCon.getLastModified());
        System.out.println("Length: " + urlCon.getContentLength());
        BufferedReader reader = new BufferedReader(new InputStreamReader(urlCon.getInputStream()));

        String tmp = reader.readLine();
        while (!tmp.isEmpty())
        {
            System.out.println(tmp);
            tmp = reader.readLine();
        }

        System.clearProperty("http.proxyHost");
    }
    /**
     * DO NOT USE IN PRODUCTION!!!!
     * This class will simply trust everything that comes along.
     * @author frank
     */
    public static class TrustAllX509TrustManager implements X509TrustManager {
        public X509Certificate[] getAcceptedIssuers() {
            return new X509Certificate[0];
        }

        public void checkClientTrusted(java.security.cert.X509Certificate[] certs,
                                       String authType) {
        }

        public void checkServerTrusted(java.security.cert.X509Certificate[] certs,
                                       String authType) {
        }

    }
}



В результате, программка выдает мне ошибочку NullPointerException , ссылающуюся на строку while (!tmp.isEmpty())
почему? что-то написано не верно?
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39185182
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfioя типа перевожу трафик в незашифрованный?
трафик остаётся зашифрованным, проверка достоверности источника отключается

что касается NullPointerException - readLine возвращает null в конце потока
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39185206
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил,

спасибо ра разьяснение.

Уважаемые знатоки, можете еще подсказаньку дать - страничка выгрузилась в XML виде.
Про парсинг сходу ничего не знаю пока, скопировал в блокнот с поддержкой XML, и он говорит, что распарсить не может по тегам.
Есть ли в яве средства для парсинга битого XML?
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39185212
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfio,

HTML не является подмножством XML.
...
Рейтинг: 0 / 0
распарсить страничку, вытянуть данные. HALP
    #39185245
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
да, вы правы, я снова сказал не то, что имел ввиду :)

как распарсить HTML ?))
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / распарсить страничку, вытянуть данные. HALP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]