Как получить HTML-код из URL после загрузки JavaScript - PullRequest
0 голосов
/ 30 ноября 2018

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

Итак, вот проблема: я использую следующий код для извлечения HTML из URL:

//Get the html code from the URL
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String input;
StringBuffer stringBuffer = new StringBuffer();
while ((input = in.readLine()) != null) {
    stringBuffer.append(input);
}
in.close();
String htmlData = stringBuffer.toString();

Теперь это дает мне страницу загрузки сайта.Я понимаю, что javascript загружает остальную часть сайта, поэтому мой вопрос: как я могу получить HTML-код из URL после завершения загрузки javascript.

Ответы [ 3 ]

0 голосов
/ 30 ноября 2018

Вы должны использовать некоторые библиотеки веб-скрепинга. Основываясь на вашем языке программирования, есть различные библиотеки для веб-скребинга, ниже одна из них

https://github.com/cheeriojs/cheerio

0 голосов
/ 30 ноября 2018

В полдень, если вы все еще пытаетесь сделать это самостоятельно, вместо того, чтобы использовать какую-либо библиотеку в качестве Cheerio, вы должны сделать запрос, прежде чем получить данные HTML.

public static String getURLSource(String url) throws IOException
{
    URL urlObject = new URL(url);
    URLConnection urlConnection = urlObject.openConnection();
    urlConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");

    return toString(urlConnection.getInputStream());
}

private static String toString(InputStream inputStream) throws IOException
{
    try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")))
    {
        String inputLine;
        StringBuilder stringBuilder = new StringBuilder();
        while ((inputLine = bufferedReader.readLine()) != null)
        {
            stringBuilder.append(inputLine);
        }

        return stringBuilder.toString();
    }
}
0 голосов
/ 30 ноября 2018

Вы должны использовать некоторые веб-библиотеки, такие как cheerio и другие.Здесь я прилагаю учебник для того же.https://codeburst.io/an-introduction-to-web-scraping-with-node-js-1045b55c63f7

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