Кодировка HtmlUntil

351
05 сентября 2021, 21:00

Для парсинга сайта использую jsoup и HtmlUntil для нажатия кнопки на странице. Все нажимается и парсится, проблема в том, что выводятся "крякозябры", можно ли как-то установить кодировку UTF-8 для адекватного вывода текста?

package com.company;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlSpan;
import org.apache.commons.logging.LogFactory;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.util.logging.Level;
public class Parsing {
    public void connectFileTxt() throws Exception {
        String text = "";
        Document document;
        LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");
        java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
        java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF);
        WebClient client = new WebClient(BrowserVersion.CHROME);
        client.getOptions().setJavaScriptEnabled(true);
        client.getOptions().setThrowExceptionOnScriptError(false);
        client.getOptions().setThrowExceptionOnFailingStatusCode(false);
        String url = "https://auto.ru/cars/new/group/mercedes/e_klasse/20743577/20886691/?grouping_id=tech_param_id%3D20743577%2Ccomplectation_id%3D21225392&sort=fresh_relevance_1-desc&geo_radius=200\n"; //ссылка на сайт
        final HtmlPage page = client.getPage(url);
        HtmlSpan clickContact = page.getFirstByXPath("//span[@class='Button__content']");
        clickContact.click();
        document = Jsoup.parse(page.asXml());
        //                    .userAgent("Chrome/4.0.249.0 Safari/532.5")
        //                    .referrer("http://www.google.com")
        //                    .get();
        if (document.title().equals("Ой!")) {
            System.out.println("Ой, снова вылезла капча");
        } else {
            Elements elements = document.getElementsByClass("CardGroupHeader-module__horisontalList");
            System.out.println(document.text());
            System.out.println();
            System.out.println(document.title());
            text = elements.text();
            System.out.println(text);
            System.out.println("Ready!");
        }
    }
}
Answer 1

Читайте джавадоки! С помощью jsoup это можно сделать значительно проще:

String url = "https://auto.ru/cars/new/group/mercedes/e_klasse/20743577/20886691/?grouping_id=tech_param_id%3D20743577%2Ccomplectation_id%3D21225392&sort=fresh_relevance_1-desc&geo_radius=200";
Document document = Jsoup.connect(url).get();
System.out.println(document.toString());
READ ALSO
Обработка строк по нажатию JAVA

Обработка строк по нажатию JAVA

Столкнулась с такой проблемойСкопирую ниже задание для какого-то понимания кода (лаба в шараге)

408
Почему не работает валидация над объектами типа DTO , а только над сущностями

Почему не работает валидация над объектами типа DTO , а только над сущностями

У меня установлена аннотация над объектами типа dto, такая же как и над объектами типа EntityНад сущностями аннотация срабатывает, а над объектами...

306
Промис в JavaScript

Промис в JavaScript

Полифил для PromiseallSettled:

116