【发布时间】: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