Использование Java для извлечения данных с веб-страницы? - PullRequest
28 голосов
/ 28 мая 2011

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

Ответы [ 3 ]

38 голосов
/ 28 мая 2011

Самое простое решение (не зависящее от какой-либо сторонней библиотеки или платформы) - создать экземпляр 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("/6673251/ispolzovanie-java-dlya-izvlecheniya-dannyh-s-veb-stranitsy");

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

        // Once you have the Input Stream, it's 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's 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);
        }
    }
}

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

27 голосов
/ 28 мая 2011

Основы

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

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

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

Hardcore Stuff

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

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

Некоторые обходные пути

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

Выезд:

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

Некоторые добавки

Некоторые другие похожие вопросы:

6 голосов
/ 28 мая 2016

Вот мое решение, использующее фразы 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 или * 1007.* библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...