java - Android正则表达式从网站抓取图像url

标签 java android regex pattern-matching expression

我正在制作一个应用程序,但遇到了这个问题 我使用模式识别代码来查找网站上文章的图像 URL。

问题是,以我的方式,它抓取了第一张特别小的照片。

模式 p = Pattern.compile("http://planetaris.gr/media/k2/items/cache .*\.jpg"); 有一张 XL 图像,我想抓取它的目的地。

我想使用一种模式,在链接末尾它会像这样

模式 p = Pattern.compile("( http://planetaris.gr/media/k2/items/cache.)+ (.*\[_XL]+(.jpg))");

或者 模式 p = Pattern.compile("http://planetaris.gr/media/k2/items/cache .*\_XL.jpg");

这就是我需要你帮助的地方 这是代码

公共(public)无效运行(){

        //Pattern p = Pattern.compile("http://planetaris.gr/media/k2/items/cache.*\\.jpg");
        //Pattern p = Pattern.compile("http://planetaris.gr/media/k2/items/cache.*\\._XL.jpg");
        Pattern p = Pattern.compile("(http://planetaris.gr/media/k2/items/cache.)+(.*\\[_XL]+(.jpg))");

        try {
                    URL url = new URL(selectedRssItem.getLink());

                    URLConnection urlc = url.openConnection();
                    Log.d("MIMIS_LINK", url.toString());
                    BufferedInputStream buffer = new BufferedInputStream(urlc.getInputStream());

                    builder = new StringBuilder();
                    int byteRead;
                    while ((byteRead = buffer.read()) != -1)
                        builder.append((char) byteRead);

                    buffer.close();

                } catch (MalformedURLException ex) {
                    ex.printStackTrace();
                } catch (IOException ex) {
                    ex.printStackTrace();
                }

                Matcher m = p.matcher(builder.toString());


                if (m.find()) {

                try {
                    bitmap = BitmapFactory.decodeStream((InputStream)new URL(m.group(0)).getContent());
                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                    Log.d("MIMIS_MATCHER", selectedRssItem.getDescription().toString());
                 };

        handler.sendEmptyMessage(0);

    }
    }.start();
    }

private Handler handler = new Handler() {

    //@SuppressWarnings("null")
    @Override
    public void handleMessage(Message msg) {

        mSpinner.clearAnimation();
        mSpinner.setVisibility(View.GONE);
            //progressDialog.dismiss();
        myimageview.setImageBitmap(bitmap);

        if (bitmap==null){

            myimageview.setImageResource(R.drawable.aris_no_image);

        };
        }       
        };  

因为网站上还有一张包含此 XL 的 jpg

这些是给定页面上的所有 .jpg 。

href="/media/k2/items/cache/df95c3d9029788dcdb6f520e9151056c_XL.jpg"

/media/k2/items/cache/df95c3d9029788dcdb6f520e9151056c_L.jpg"

“/images/stories/atnea2.jpg”

/images/stories/diarkeias-bc.jpg"

最佳答案

这个正则表达式:/(media|images)/[^\.]*\.jpg

匹配您的所有样本:

href="/media/k2/items/cache/df95c3d9029788dcdb6f520e9151056c_XL.jpg" /media/k2/items/cache/df95c3d9029788dcdb6f520e9151056c_L.jpg" “/images/stories/atnea2.jpg” /images/stories/diarkeias-bc.jpg"

关于java - Android正则表达式从网站抓取图像url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14849912/

相关文章:

android - 使用 Jack 编译器时出错 - app/build/intermediates/packaged/debug/classes.zip' is an invalid library

android - 自动刷新 Activity

java - 你能帮忙解决 Java 中的正则表达式问题吗?

java - 自动隐藏 GWT 弹出面板

java - 使用 MySql 和 PHP 进行 Android 登录

Java 线程执行后被多次中断

php - Android MySQL PHP 语法错误意外回显

ruby - 通过正则表达式对数组进行排序的更好方法?

JavaScript:pushState 替换搜索字符串中的静态值

java - Java 中的 putSerializable 和 putParcelable 有什么不同?