Java 使用Jsoup获取图像

Java 使用Jsoup获取图像,java,android-studio,jsoup,retrofit2,Java,Android Studio,Jsoup,Retrofit2,首先,对不起我的英语不好。我是编程新手(大学2年)。我正在尝试从zomato那里获取图像。是的,API只给我们链接。()所以我需要手动从web获取图像 我已经在iOS中使用Kana完成了这项工作 func parseHTML(html:String){ if let doc = Kanna.HTML(html: html, encoding: String.Encoding.utf8){ for show in doc.css("div[class^='photobox'

首先,对不起我的英语不好。我是编程新手(大学2年)。我正在尝试从zomato那里获取图像。是的,API只给我们链接。()所以我需要手动从web获取图像

我已经在iOS中使用Kana完成了这项工作

func parseHTML(html:String){
    if let doc = Kanna.HTML(html: html, encoding: String.Encoding.utf8){
        for show in doc.css("div[class^='photobox']"){
            let getA = show.css("a").first
            let image = getA!.css("img[class^='res-photo']").first?["data-original"]
            let imageUrl = image!.components(separatedBy: "?")[0]
            linkImageArray.append(imageUrl)
            print("jumlah gambar = \(linkImageArray.count)")
        }
    }
    foodCV.reloadData()
}
我的问题是如何在Jsoup中做到这一点

这就是我得到HTML的原因

Call<ResponseBody> photos = client.getPhotos();
    photos.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
            if (response.isSuccessful()){
                    Log.i("retrofit: ","response "+response.body().toString());
                    getPhotos(response.body().toString());
            }else{
                Log.i("retrofit: ","notSuccess");
            }
        }
我肯定我不能用这个。它将返回所有图像。我想获得带有“原始数据”的img

<img class='res-photo-thumbnail thumb-load lazy-photo-inner'
        src='https://b.zmtcdn.com/images/photoback.png'
        title='Coffee Sisters - Coffee Sisters&#039;s photo'
        alt='Coffee Sisters - Coffee Sisters&#039;s photo'
        data-original='https://b.zmtcdn.com/data/reviews_photos/e4a/04b8e0669945bfe03fd0789cbd42be4a.jpg?fit=around%7C200%3A200&amp;crop=200%3A200%3B%2A%2C%2A'
        data-type='res'
        data-photo_id='u_NDY5NzEwNzI1MD'
        data-index='27'
        data-category='all'
         />

只要更改几行代码,我就能得到我想要的~

Call<ResponseBody> photos = client.getPhotos();
    photos.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
            if (response.isSuccessful()){
                    Log.i("retrofit: ","response "+response.body().toString());
                    getPhotos(response.body());


            }else{
                Log.i("retrofit: ","notSuccess");
            }
        }

只要修改几行代码,我就能得到我想要的~

Call<ResponseBody> photos = client.getPhotos();
    photos.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
            if (response.isSuccessful()){
                    Log.i("retrofit: ","response "+response.body().toString());
                    getPhotos(response.body());


            }else{
                Log.i("retrofit: ","notSuccess");
            }
        }

@KarlNicholas可能重复,它将返回所有img标记,我只需要使用“原始数据”获取img。@KarlNicholas可能重复,它将返回所有img标记,我只需要使用“原始数据”获取img。
public void getPhotos(ResponseBody body){
    try {
        Document doc = Jsoup.parse(body.string());
        Elements photobox = doc.select("img[class=res-photo-thumbnail thumb-load lazy-photo-inner]");Toast.LENGTH_SHORT).show();
        for (Element data : photobox) {
            String imagelink = data.attr("data-original").toString();
            String[] parts = imagelink.split("[?]");
            imageList.add(parts[0]);
            Log.i("imagelink : ",parts[0]);
        }
    }catch (IOException e){
        e.printStackTrace();
    }
}