Android:提取文章主要内容。如何仅提取内容img并删除图标img

时间:2016-04-06 14:38:25

标签: android image textview imageview jsoup

我正在使用JSoup libray提取文本元素并将其显示在TextView中,并使用ImageViewImageLoader中显示图像。 ImageLoader是我创建的用于加载和缓存图像的类。我的以下代码成功显示了文本和图像。但是,我只想在主要内容中显示img。我可以知道如何删除所有图标img?以下是我的代码。

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    linearLayout = (LinearLayout)findViewById(R.id.linearLayout1);
    setContentToView();
}

public void setContentToView(){
    List<String> p = new ArrayList<>();
    List<String> src = new ArrayList<>();
    Document doc = Jsoup.parse(content);
    Elements elements = doc.getAllElements();
    String body;

    for(Element element :elements ){
        Tag tag = element.tag();
        if(tag.getName().equalsIgnoreCase("p") ){
            element.select("img").remove();
            body= element.html() + "<br>";
            TextView textView = new TextView(this);
            textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT));
            textView.setText(Html.fromHtml(body));
            this.linearLayout.addView(textView);
            p.add(body);
        }


        if (tag.getName().equalsIgnoreCase("img")){
            String url  = element.select("img").attr("src");
            String urls = "http://www.tutorialspoint.com"+ url;
            int loader = R.mipmap.ic_launcher;
            final ImageView imageView = new ImageView(this);
            imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT));
            ImageLoader imgLoader = new ImageLoader(getApplicationContext());
            imgLoader.DisplayImage(urls, loader, imageView);
            this.linearLayout.addView(imageView);
            src.add(urls);
        }
    }
}

以下是代码的结果。但我想删除所有不必要的图标img。

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

  

我想删除所有不必要的图标img。

在提取数据之前,删除包含图标img的div(参见下面的示例代码)

样品

String url = "http://www.tutorialspoint.com/joomla/joomla_control_panel.htm";

Document doc = Jsoup.connect(url).timeout(0).get();
System.out.println("BEFORE: " + doc.select("img[src$=Icon.jpg]").size());

doc.select("#rightbar").remove();
System.out.println("AFTER: " + doc.select("img[src$=Icon.jpg]").size());

输出

BEFORE: 5
AFTER: 0

最后一点,代码正在尝试解析img urls。 Jsoup可以做到。所以而不是:

String url  = element.select("img").attr("src");
String urls = "http://www.tutorialspoint.com"+ url;

使用它:

String urls  = element.absUrl("src"); // Jsoup will construct the absolute url for you