0

我正在使用 Jsoup 从这个意大利网站上抓取图片库

http://www.italiaebraica.org/index.php?option=com_phocagallery&view=category&id=3:famiglia-levi&Itemid=143&lang=it

在带有 Jsoup 的 AsyncTask 中,我从 HTML 中获取图像的所有 url:

@Override
protected Void doInBackground(String... params) {

    Document doc;

    try {
        ConnectivityManager conMgr = (ConnectivityManager) mActivity
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        if (conMgr.getActiveNetworkInfo() != null
                && conMgr.getActiveNetworkInfo().isAvailable()
                && conMgr.getActiveNetworkInfo().isConnected()) {
            doc = Jsoup
                    .connect(urlReceivedToConnect)
                    .timeout(0).get();
            Elements imgList = doc.getElementsByClass("phocagallery-box-file-third").select("img");
            photoList = new ArrayList<String>();
            ListIterator<Element> post = imgList.listIterator();

            while (post.hasNext()) {
                photoList.add(post.next().attr("abs:src"));
            }
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return null;
}

然后,在一个定制的适配器中,我正在使用这个 urlsList 并从我稍后放入 gridView 的 url 加载图像:

private Drawable LoadImageFromURL(String url) {
    try {
        InputStream is = (InputStream) new URL(url).getContent();
        Drawable d = Drawable.createFromStream(is, "src");
        return d;
    } catch (Exception e) {
        System.out.println(e);
        return null;
    }
}

问题是:有些图片显示正常,但有些图片显示此错误:

06-23 10:06:06.930: I/System.out(493): java.io.FileNotFoundException: http://www.italiaebraica.org/images/phocagallery/famiglia_levi/thumbs/phoca_thumb_m_Famiglia Levi 024.jpg

有什么问题?如何以正确的方式获取所有图片?请帮忙,希望很清楚,我是一名初级开发人员!

4

2 回答 2

0

问题是 URL 中有空格。大多数浏览器都会检测是否有空格并将其替换为 %20,这样您就不会在浏览器中访问 URL 时遇到任何错误。所以我建议使用:

private Drawable LoadImageFromURL(String url) {
    if(url.contains(" ")){
        url.replace(" ", "%20");
    }
    try {
        InputStream is = (InputStream) new URL(url).getContent();
        Drawable d = Drawable.createFromStream(is, "src");
        return d;
    } catch (Exception e) {
        System.out.println(e);
        return null;
    }
}
于 2013-06-25T23:25:35.230 回答
0
 java.io.FileNotFoundException:

是不言自明的。打印出 url,这样您就可以看到导致异常的那些。调试时间应该不会太长。

我不知道哪些图像存在,哪些不存在,所以你是必须弄清楚的人。

于 2013-06-23T10:43:29.917 回答