Как парсить html файлы, а не сайты? Jsoup
У меня есть каталог скаченный Html-файлов, хочу потренироваться в их парсинге, но не могу понять, как мне при помощи jsoup найти эти файлы ( в каталоге html файлы разбросаны по папкам ) для дальнейшего парсинга? Данный код выдаёт ошибку, не понимаю, как правильно указать путь ( в идеале нужно все html файлы в каталоге) .
import org.jsoup.*;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
public class ParsingGcTest {
public static void main(String[] args) throws IOException {
Document document=Jsoup.connect("C:\\Users\\71376160\\Desktop\\docs\\specs\\security\\standard-names.html").get();
Elements elements=document.select("code");
for(Element element: elements){
System.out.println(element);
}
}
}
Exception in thread "main" java.lang.IllegalArgumentException: Malformed URL: C:\Users\71376160\Desktop\docs\specs\security\standard-names.html
at org.jsoup.helper.HttpConnection.url(HttpConnection.java:131)
at org.jsoup.helper.HttpConnection.connect(HttpConnection.java:70)
at org.jsoup.Jsoup.connect(Jsoup.java:73)
at ParsingGcTest.main(ParsingGcTest.java:10)
Caused by: java.net.MalformedURLException: unknown protocol: c
at java.base/java.net.URL.<init>(URL.java:679)
at java.base/java.net.URL.<init>(URL.java:568)
at java.base/java.net.URL.<init>(URL.java:515)
at org.jsoup.helper.HttpConnection.url(HttpConnection.java:129)
... 3 more
Ответы (1 шт):
Причина ошибки в том, что connect ожидал ссылку на сайт (поэтому он за протокол принял C, т.к. например между C: и http: есть схожесть :) )
Попробуйте через parse загрузить файл:
String filename = "C:\\Users\\71376160\\Desktop\\docs\\specs\\security\\standard-names.html";
File input = new File(filename);
Document document = Jsoup.parse(input, "UTF-8", "http://example.com/");
...
Третий параметр в parse это baseUri, оно нужно для определения полных адресов для относительных ссылок в документе. Если это не нужно, то можно оставить пустую строку.