简体   繁体   English

使用 JSoup 从 html 标签中获取正确的文本

[英]Fetching proper text from html tags using JSoup

I want to fetch title from online bookstore.我想从网上书店取书名。 Unforunately it is fetching me something like this:不幸的是,它给我带来了这样的东西:

"title": "1 Jak mniej myśleć. Dla analizujących bez końca i wysoko wrażliwych"

I want to get rid of this "1", same for next books, because the next books will have 2,3,4 etc... So it should go with:我想摆脱这个“1”,下一本书也一样,因为下一本书会有 2,3,4 等等......所以它应该与:

"title": "Jak mniej myśleć. Dla analizujących bez końca i wysoko wrażliwych"

I was wondering if it is possible with Jsoup or I need to think about only Java code.我想知道 Jsoup 是否可行,或者我只需要考虑 Java 代码。

Here is the fetching instruction that takes this title (I'm using for loop, that's why it looks like this)这是采用此标题的获取指令(我正在使用 for 循环,这就是它看起来像这样的原因)

document = Jsoup.connect(bestSellersEmpikURL).get();
List<Element> siteElements = document.select("div.productWrapper");
 for (int i = 0; i < 5; i++) {
           ....
            String title = siteElements.get(i).select("strong").first().text();
            ...
}

Here is the site:这是网站:

<a href="/za-duzo-mysle-poradnik-dla-analizujacych-bez-konca-petitcollin-christel,p1222736270,ksiazka-p" class="img seoImage" title="Jak mniej myśleć. Dla analizujących bez końca i wysoko wrażliwych &nbsp;-&nbsp;Petitcollin Christel" rel="nofollow" data-product-id="p1222736270">
<img class="lazy" src="https://ecsmedia.pl/c/jak-mniej-myslec-dla-analizujacych-bez-konca-i-wysoko-wrazliwych-p-iext54318159.jpg" lazy-img="https://ecsmedia.pl/c/jak-mniej-myslec-dla-analizujacych-bez-konca-i-wysoko-wrazliwych-p-iext54318159.jpg" alt="">
</a>
    <div class="name">
<a href="/za-duzo-mysle-poradnik-dla-analizujacych-bez-konca-petitcollin-christel,p1222736270,ksiazka-p" class="seoTitle" title="Jak mniej myśleć. Dla analizujących bez końca i wysoko wrażliwych &nbsp;-&nbsp;Petitcollin Christel" data-product-id="p1222736270">
<strong class="ta-product-title"><span class="blue-number">1</span>
Jak mniej myśleć. Dla analizujących bez końca i wysoko wrażliwych
</strong>
</a>
<div class="smartAuthorWrapper ta-product-smartauthor">
<a href="/szukaj/produkt?author=petitcollin+christel" class="smartAuthor" title="Petitcollin Christel - wszystkie produkty">
Petitcollin Christel </a>
</div>
<div class="categoryAndRatings">
<div class="category">
<span>
<span class="productMainInfoSuffix ta-product-category">Książki</span>
|
<span class="productMainInfoSuffix ta-product-carrier">
okładka&nbsp;miękka
</span>
</span>
</div>
<div class="rating">
<ul class="ratingStars">
<li class="rate">
<i class="fa fa-fw fa-star"></i>
...

and link https://www.empik.com/bestsellery/ksiazki并链接https://www.empik.com/bestsellery/ksiazki

Then your problem may be solvable by simply changing那么您的问题可能可以通过简单地改变来解决

siteElements.get(i).select("strong").first().text();

to

siteElements.get(i).select("strong").first().ownText();

or more briefly, changing .text() to .ownText() .或者更简单地说,将.text()更改为.ownText()

This will display the Element's own text and not nested element text.这将显示元素自己的文本而不是嵌套的元素文本。

eg,例如,

document = Jsoup.connect(bestSellersEmpikURL).get();
List<Element> siteElements = document.select("strong.ta-product-title");
for (Element element : siteElements) {
    System.out.println(element.ownText());
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM