Java — лучший способ загрузить исходный HTML веб-страницы

#java #download

#java #Скачать

Вопрос:

Я пишу небольшой поисковый робот. Какой наилучший способ загрузить исходный HTML веб-страницы? В настоящее время я использую небольшой фрагмент кода, приведенный ниже, но иногда результатом является только половина исходного кода страницы!!! Я не знаю, в чем проблема. Некоторые люди предположили, что я должен использовать Jsoup, но используя .get.html Функция () из Jsoup также возвращает половину исходного кода страницы, если он слишком длинный. Поскольку я пишу сканер, очень важно, чтобы метод поддерживал Unicode (UTF-8), и эффективность также очень важна. Я хотел узнать лучший современный способ сделать это, поэтому я спросил вас, ребята, поскольку я новичок в Java. Спасибо.

Код:

 public static String downloadPage(String url)
    {
        try
        {
            URL pageURL = new URL(url);
            StringBuilder text = new StringBuilder();
            Scanner scanner = new Scanner(pageURL.openStream(), "utf-8");
            try {
                while (scanner.hasNextLine()){
                    text.append(scanner.nextLine()   NL);
                }
            }
            finally{
                scanner.close();
            }
            return text.toString();
        }
        catch(Exception ex)
        {
            return null;
        }
    }
  

Ответ №1:

Я использую commons-io String html = IOUtils.toString(url.openStream(), "utf-8");

Комментарии:

1. Снова та же проблема. Возвращаемая строка заканчивается на ... , а ее длина равна: 439802

2. @Alireza Noori дай мне целевой URL

3. Utilities.downloadPage("http://www.stackoverflow.com").length() вернул: 191760 и его последними символами являются: <div class="votes"> ...

4. ОК. Проблема решена!!!! Eclipse показывал только половину моей строки, отсюда и эта проблема!! Я записал этот вывод в файл, и все было в порядке! Я не смог найти никакого способа проверить полную строку во время отладки!! Потрясающе! Серьезно! Чем больше я провожу времени с Java, тем больше я люблю .Net!!!

Ответ №2:

Лично я очень доволен HTTP-библиотекой Apachehttp://hc.apache.org/httpcomponents-client-ga /. Если вы пишете веб-сканер, которым я также являюсь, вы можете высоко оценить контроль, который он дает над такими вещами, как файлы cookie, общий доступ к клиентам и тому подобное.

Комментарии:

1. Это не очень мощный поисковик, но я хочу, чтобы он делал то, что делает, как можно быстрее и совершеннее. На данный момент я просто хочу, чтобы он загружал исходный код страницы, и мне не нужно так много контроля, но если это не привносит столько сложности в мой код, я был бы более чем счастлив его использовать. Что вы думаете?

2. Теперь, когда я выяснил, в чем была проблема, как вы думаете, мне следует использовать эту библиотеку или мой старый код?

3. Оба решения работают, но с первым были некоторые проблемы (например imdb.com вернет ошибку 403). Итак, я выбрал это в качестве ответа. Он очень прост в использовании.