#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. Снова та же проблема. Возвращаемая строка заканчивается на
...
, а ее длина равна: 4398022. @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). Итак, я выбрал это в качестве ответа. Он очень прост в использовании.