Подтвердить что ты не робот

Использование Java для вывода данных с веб-страницы?

Я пытаюсь сделать свою первую программу на Java. Цель состоит в том, чтобы написать программу, которая просматривает веб-сайт и загружает файл для меня. Однако я не знаю, как использовать Java для взаимодействия с Интернетом. Может ли кто-нибудь сказать мне, какие темы искать/читать или рекомендовать некоторые хорошие ресурсы?

4b9b3361

Ответ 1

Простейшим решением (без зависимости от сторонней библиотеки или платформы) является создание экземпляра URL-адреса, указывающего на веб-страницу/ссылку, которую вы хотите загрузить, и чтение содержимого с использованием потоков.

Например:

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


public class DownloadPage {

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

        // Make a URL to the web page
        URL url = new URL("http://stackoverflow.com/questions/6159118/using-java-to-pull-data-from-a-webpage");

        // Get the input stream through URL Connection
        URLConnection con = url.openConnection();
        InputStream is =con.getInputStream();

        // Once you have the Input Stream, it just plain old Java IO stuff.

        // For this case, since you are interested in getting plain-text web page
        // I'll use a reader and output the text content to System.out.

        // For binary content, it better to directly read the bytes from stream and write
        // to the target file.


        BufferedReader br = new BufferedReader(new InputStreamReader(is));

        String line = null;

        // read each line and write to System.out
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    }
}

Надеюсь, что это поможет.

Ответ 2

Основы

Посмотрите на них, чтобы построить решение более или менее с нуля:

Легко склеенные и сшитые материалы

У вас всегда есть возможность вызова внешних инструментов из Java с помощью exec() и подобных методов. Например, вы можете использовать wget или cURL.

Hardcore Stuff

Тогда, если вы хотите перейти к более полноценным вещам, к счастью, необходимость в автоматическом веб-тестировании дала нам очень практические инструменты для этого. Посмотрите:

Некоторые другие библиотеки целенаправленно написаны с учетом веб-лома:

Некоторые способы обхода

Java - это язык, но также и платформа, на которой работают многие другие языки. Некоторые из них интегрируют большой синтаксический сахар или библиотеки, чтобы легко создавать скребки.

Отъезд:

Если вы знаете отличную библиотеку для Ruby (JRuby с текстом о соскабливании с помощью JRuby и HtmlUnit) или Python (Jython), или вы предпочитаете эти языки, а затем даете своим портам JVM шанс.

Некоторые дополнения

Некоторые другие подобные вопросы:

Ответ 3

Здесь мое решение использует фразы URL и try with resources, чтобы поймать исключения.

/**
 * Created by mona on 5/27/16.
 */
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
public class ReadFromWeb {
    public static void readFromWeb(String webURL) throws IOException {
        URL url = new URL(webURL);
        InputStream is =  url.openStream();
        try( BufferedReader br = new BufferedReader(new InputStreamReader(is))) {
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        }
        catch (MalformedURLException e) {
            e.printStackTrace();
            throw new MalformedURLException("URL is malformed!!");
        }
        catch (IOException e) {
            e.printStackTrace();
            throw new IOException();
        }

    }
    public static void main(String[] args) throws IOException {
        String url = "https://madison.craigslist.org/search/sub";
        readFromWeb(url);
    }

}

Вы можете дополнительно сохранить его в файл на основе ваших потребностей или проанализировать его с помощью библиотек XML или HTML.