java Jsoup вопрос, как я могу разделить на слово? - PullRequest
0 голосов
/ 02 декабря 2018

Я хочу получить html-контент без тегов и результат как

word
word
word

Поэтому я попробовал следующее.

public class PreProcessing {

    public static void main(String\[\] args) throws Exception {

        PrintWriter out = new PrintWriter("filename.txt");

        URL url = new URL("[https://en.wikipedia.org/wiki/Distributed\_computing](https://en.wikipedia.org/wiki/Distributed_computing)");

        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

        String inputLine = "";

        String input = "";


        while ((inputLine = in.readLine()) != null)

        {
            input += inputLine;
            //          System.out.println(inputLine);
        }

        //create Jsoup document from HTML

        Document jsoupDoc = Jsoup.parse(input);

        //set pretty print to false, so \\n is not removed

        jsoupDoc.outputSettings(new OutputSettings().prettyPrint(false));

        //select all <br> tags and append \\n after that

        //        [jsoupDoc.select](https://jsoupDoc.select)("br").after("\\\\n");

        //select all <p> tags and prepend \\n before that

        //        [jsoupDoc.select](https://jsoupDoc.select)("p").before("\\\\n");

        //get the HTML from the document, and retaining original new lines

        String str = jsoupDoc.html().replaceAll(" ", "\n");
        //        str.replaceAll("\t", "");

        String strWithNewLines = Jsoup.clean(str, "", Whitelist.none(), new OutputSettings().prettyPrint(false));
        strWithNewLines.replaceAll("\t", "\n");
        strWithNewLines.replaceAll("\\"", "");

        strWithNewLines.replaceAll(".", "");

        System.out.println(strWithNewLines);

        out.print(strWithNewLines);
    }
}

Это мой код, который я пробовал en.wiki~ distributed_computin g ичитать из BufferedReader и использовать jsoupDoc, и я хочу заменить слово " " на "\n", потому что я хочу word \n word\n word\n, как это.

Тогда результат будет

Distributed

computing

-

Wikipedia                                               Distributed

computing                           From

Wikipedia,

the

free

encyclopedia                                                Jump

to

navigation              Jump

to

search              "Distributed

application"

redirects

here.

For

trustless

applications,

see

Но я хочу, чтобы результат был таким

Distributed

computing

-

Wikipedia

Distributed

computing

From

Wikipedia

the

free

encyclopedia

Jump

to

navigation

Jump

to

search

Distributed

application

redirects

here

For

trustless

applications

see

Я пытался как

strWithNewLines.replaceAll("\\"", "");

strWithNewLines.replaceAll(".", "");

Но это не сработало.Почему это не сработало?Я сделал поиск в Google, но не могу найти решение.

1 Ответ

0 голосов
/ 03 декабря 2018

Попробуйте это для последних нескольких строк.Это приблизит вас к желаемому результату:

String strWithNewLines = Jsoup.clean ...;
String result = strWithNewLines.replaceAll("\t", "\n")
    .replaceAll("\"", "");
    //.replaceAll(".", "");

System.out.println(result);

Проблема в вашем коде состоит в том, что строка неизменна, поэтому String.replaceAll ничего не заменит в исходной строке, но создаст новую, в которой подстановкабыло сделано.Но вы никогда не используете результат.

И есть проблема с .replaceAll(".", "").Это даст вам пустую строку, потому что . соответствует каждому символу, и она будет заменена пустой строкой.

...