Я хочу, чтобы программа распечатывала текст каждого URL-адреса
HtmlPage points = (HtmlPage) webClient.getPage("https://www.hockey-reference.com/leaders/points_career.html");
String pointsPageContent=points.asText();
HtmlPage assists = (HtmlPage) webClient.getPage("https://www.hockey-reference.com/leaders/assists_career.html");
String assistsPageContent=assists.asText();
final HtmlPage page1 = webClient.getPage(pointsPageContent);
final HtmlPage page2 = webClient.getPage(assistsPageContent);
if (input == "Points") {
System.out.println(page1);
}
else if (input == "Assists") {
System.out.println(page2);
}
else {
System.out.println("not a valid entry, please type either 'Points' or 'Assists' to see the stats for the corresponding category");
}
Я должен получить текст для каждого URL-адреса, но вместо этого он дает мне исключение MalformedURLException.
Похоже, вы извлекаете страницу один раз, а затем извлекаете содержание страницы (т.е. HTML), как если бы это был URL-адрес. Вы уже извлекли обе страницы после первых нескольких строк кода — какими вы ожидаете быть page1
и page2
?
Трассировка стека исключения? Кроме того, pointsPageContent и AssistPageContent не являются URL-адресами.
Насколько я вижу, два предоставленных вами URL-адреса действительны, поэтому ни один из них не должен вызывать это исключение. Как уже упоминалось, вам нужно предоставить более подробную информацию: трассировка стека и строка, вызывающая проблему, были бы хорошим началом, используемая библиотека также поможет (я предполагаю, что вы используете HtmlUnit).
Да, я использую HtmlUnit, и он говорит, что проблема связана со строкой, в которой есть page1.
@RealSkeptic Возможно, HtmlUnit, но не уверен в этом.
Исключение в потоке "main" java.net.MalformedURLException: нет протокола: Карьерные лидеры НХЛ и ВАЗ и рекорды по очкам | Hockey-Reference.com по адресу java.base/java.net.URL.<init>(URL.java:627) по адресу com.gargoylesoftware.htmlunit.util.UrlUtils.toUrlUnsafe(UrlUtils.java:243) по адресу com. gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:448) в SpringProject.main(SpringProject.java:56)
Как сказал @JonSkeet, эта ошибка возникает из-за того, что вы извлекаете содержимое страницы, как если бы это был URL-адрес.
@FilipeManuel, как мне это исправить, чтобы он не извлекался как URL-адрес?
Как сказал @JonSkeet, эта ошибка возникает из-за того, что вы извлекаете содержимое страницы, как если бы это был URL-адрес.
try {
HtmlPage points = (HtmlPage) webClient.getPage("https://www.hockey-reference.com/leaders/points_career.html");
String pointsPageContent = points.asText();
HtmlPage assists = (HtmlPage) webClient.getPage("https://www.hockey-reference.com/leaders/assists_career.html");
String assistsPageContent = assists.asText();
if (input.equals("Points")) {
System.out.println(pointsPageContent);
} else if (input.equals("Assists")) {
System.out.println(assistsPageContent);
} else {
System.out.println("not a valid entry, please type either 'Points' or 'Assists' to see the stats for the corresponding category");
}
} catch (IOException ex) {
ex.printStackTrace(); // Capture and treat errors
}
Просто сравните содержимое страницы с желаемым вводом.
Пожалуйста, укажите название библиотеки, которую вы используете, в тегах или в вопросе. Кроме того, независимо от вашего исключения, вы не должны сравнивать строки с
==
.