【问题标题】:Parsing HTML elements in order using Jsoup使用 Jsoup 按顺序解析 HTML 元素
【发布时间】:2017-09-05 10:37:04
【问题描述】:

使用 Jsoup,我一直在尝试通过以编程方式创建 TextView 和 ImageView 来解析文章并将其显示在 Android 应用程序中。我试图避免在 Android Studio 中使用 WebView 布局,因为它没有提供太多自定义。使用 TextView,我可以将应用设置为按我的意愿行事。

问题是我应该按顺序获取文章元素并按该顺序显示。

文章可能看起来像这样(为了询问而简化)

<h2>Lorem ipsum</h2>
<p>Lorem ipsum 2</p>
<p>Lorem ipsum 3</p>
<p><img src="blabla.jpg"/></p>
<p>Lorem ipsum Lorem ipsum Lorem ipsum</p>
<strong>Dolor si amette</strong>
<p><img src="abc.png"/><br/>Source : ABC Pte. Ltd.</p>

每篇文章的结构都不相同。也许在其他一些文章上,它会是这样的

<p><img src="blabla.jpg"/></p>
<p>Lorem ipsum 2</p>
<p>Lorem ipsum 3</p>
<h2>Lorem ipsum</h2>
<p><img src="abc.png"/><br/>Source : ABC Pte. Ltd.</p>
<strong>Dolor si amette</strong>

重要的是,只要有图片,我就应该获取图片的 URL,当有文字时,我应该获取文字。

我尝试迭代每个 p 标签 并查找图像或文本。

    Document jsoupParse = Jsoup.parse(html);

    Elements paragraph = jsoupParse.getElementsByTag("p");
    int sizeJsoup = jsoupParse.getElementsByTag("p").size();
    System.out.println("Size of P tag = "+sizeJsoup);

    for(Element element:paragraph){
        if(element.hasText()){
            System.out.println("Text:"+element.text());
        }else{
            Elements image = element.getElementsByTag("img");
            for(Element imageElement:image){
                System.out.println("Image URL : "+imageElement.absUrl("src"));
            }
        }
    }

不幸的是,它不考虑 标题标签,它只抓取文本以防万一

    <p><img src="abc.png"/><br/>Source : ABC Pte. Ltd.</p>

它只在文本下方,但也不在图像 URL 之下。

    Source : ABC Pte. Ltd.

【问题讨论】:

    标签: java android jsoup html-parser


    【解决方案1】:

    你可以尝试使用imageElement.attr("src");而不是imageElement.absUrl("src");

    【讨论】:

      猜你喜欢
      • 2016-04-18
      • 2015-01-03
      • 2016-08-13
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 2012-06-19
      • 1970-01-01
      相关资源
      最近更新 更多