как просто получить URL с типом HTML с JSoup - PullRequest
0 голосов
/ 05 июня 2018

Я хочу загружать только сайты с типом контента "text / html" и не загружать pdf / mp4 / rar ... files

, сейчас мой код такой:

 Connection connection = Jsoup.connect(linkInfo.getLink()).followRedirects(false).validateTLSCertificates(false).userAgent(USER_AGENT);

 Document htmlDocument = connection.get();

 if (!connection.response().contentType().contains("text/html")) {

     return;
 }

Неужели нет ничего подобного:

Jsoup.connect(linkInfo.getLink()).contentTypeOnly("text/html");

1 Ответ

0 голосов
/ 05 июня 2018

Если вы имеете в виду, что вам нужен способ узнать, является ли файл HTML перед его фактической загрузкой, то вы можете использовать запрос HEAD.Это запросит только заголовки, так что вы можете проверить, равен ли он text/html, прежде чем загружать файл.Используемый вами метод на самом деле не работает, потому что вы загружаете файл и анализируете его как HTML перед проверкой , что приведет к исключению для файлов, отличных от HTML.

Connection connection = Jsoup.connect(linkInfo.getLink())
    .method(Connection.Method.HEAD)
    .validateTLSCertificates(false)
    .followRedirects(false)
    .userAgent(USER_AGENT);

Connection.Response head = connection.execute();
if (!head.contentType().contains("text/html")) return;

Document html = Jsoup.connect(head.url())
    .validateTLSCertificates(false)
    .followRedirects(false)
    .userAgent(USER_AGENT)
    .get();
...