如何使用Android中的Jsoup从新闻帖中提取图像以加载到imageview中?

时间:2016-01-06 18:22:11

标签: android html parsing imageview jsoup

这是我的代码,它给出了一个错误,指出URL无效,但我确信它是有效的,因为我可以通过浏览器获取图像。这是link to the page

// Connect to the web site
Document document = Jsoup.connect(newsImg).get();
// Using Elements to get the class data
Elements img = document.select("img[src]");
// Locate the src attribute
String imgSrc = img.attr("src");
// Download image from URL
InputStream input = new java.net.URL(imgSrc).openStream();
// Decode Bitmap
bitmap = BitmapFactory.decodeStream(input);

2 个答案:

答案 0 :(得分:0)

你没有指定你想要的图像,所以我假设你想要第一条新闻的图片。如果您在检查员中打开该页面(例如Chrome的开发工具),您可以看到该图像具有相对链接,如下所示:let v1 : welcomeMessageView = welcomeMessageView(nibName: "welcomeMessageView", bundle: nil) self.addChildViewController(v1) self.scrollView.addSubview(v1.view) v1.didMoveToParentViewController(self) ,这可能是您错误背后的动机。

如果要下载图像,则必须提供完整的URL,这是相对URL所依据的基本目标。在这种情况下,它会解析为:/rf/image_size_800x600/HT/p2/2016/01/05/Pictures/india-airbase-attack_a23bb650-b38f-11e5-87b3-9157ef61c9c7.jpg

答案 1 :(得分:0)

请尝试使用以下代码。有关详细信息,请参阅其中的注释。

Document document = Jsoup.connect(newsLink).get();

// Instead of using Elements, we'll use Element class directly...
Element img = document.select("img#1").first();
if (img == null) { // Always check that the image has been foud
    throw new RuntimeException("Unable to locate image in " + newsLink);
}

// Locate the src attribute. You need an absolute URL here...
String imgSrc = img.absUrl("src"); // ... so we use `absUrl`

// Download image from URL
InputStream input = new java.net.URL(imgSrc).openStream();

//...