我正在制作一个应用程序,但遇到了这个问题 我使用模式识别代码来查找网站上文章的图像 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/