Нам нужно сделать снимок с национальной географической фотографии дня для андроидного проекта. Мы используем jsoup для этого, и он работает на других сайтах и фотографиях, которые мы пытались получить, но не с этим. http://www.nationalgeographic.com/photography/photo-of-the-dayКак получить национальную географическую фотографию дня с jsoup в android
Это ссылка на фотографию, которую мы должны получить. Если вы проверите страницу, вы увидите, что элемент, содержащий ссылку, имеет несколько ссылок на фотографии разных размеров. Поэтому мы подозреваем, что это проблема. Вот элемент со всеми ссылками:
<source srcset="http://yourshot.nationalgeographic.com/u/fQYSUbVfts-T7odkrFJckdiFeHvab0GWOfzhj7tYdC0uglagsDq-TNIRQ3qELJppd8ZLNRvnhakVub3VQlC2V5_yAGtyNoIAtaUObf5sBn_PGVEIlVVcerfj6l1ovYy2W4h7lMAkEVLdiCZKr9S9wuwge1myLnbvmEvxjeQ-HOfdmgprhGjqn4pNtAwmKvwU6FOW3O0jR-t4LlattRw52wBmvg/ 240w, http://yourshot.nationalgeographic.com/u/fQYSUbVfts-T7odkrFJckdiFeHvab0GWOfzhj7tYdC0uglagsDq-TNIRQ3qELJppd8ZLNRvnhakVub3VQlC2V5_yAGtyNoIAtaUObf5sBn_PGVEIlVVcerfj6l1ovYy2W4h7lMAkEVLdiCZKr9S9wuwge1myLnbvmEvxjeQ-HOfdmgprhGjqn4pNtAwmKvwU6cKxp_v-TRYywK8kMonNsWFMiA/ 320w, http://yourshot.nationalgeographic.com/u/fQYSUbVfts-T7odkrFJckdiFeHvab0GWOfzhj7tYdC0uglagsDq-TNIRQ3qELJppd8ZLNRvnhakVub3VQlC2V5_yAGtyNoIAtaUObf5sBn_PGVEIlVVcerfj6l1ovYy2W4h7lMAkEVLdiCZKr9S9wuwge1myLnbvmEvxjeQ-HOfdmgprhGjqn4pNtAwmKvwU76IwFM89MgsU2CsVpABa94yrwg/ 500w, http://yourshot.nationalgeographic.com/u/fQYSUbVfts-T7odkrFJckdiFeHvab0GWOfzhj7tYdC0uglagsDq-TNIRQ3qELJppd8ZLNRvnhakVub3VQlC2V5_yAGtyNoIAtaUObf5sBn_PGVEIlVVcerfj6l1ovYy2W4h7lMAkEVLdiCZKr9S9wuwge1myLnbvmEvxjeQ-HOfdmgprhGjqn4pNtAwmKvwU7Lx-mjq8_Dk9iI7H4kcoPo-SmA/ 640w, http://yourshot.nationalgeographic.com/u/fQYSUbVfts-T7odkrFJckdiFeHvab0GWOfzhj7tYdC0uglagsDq-TNIRQ3qELJppd8ZLNRvnhakVub3VQlC2V5_yAGtyNoIAtaUObf5sBn_PGVEIlVVcerfj6l1ovYy2W4h7lMAkEVLdiCZKr9S9wuwge1myLnbvmEvxjeQ-HOfdmgprhGjqn4pNtAwmKvwU4kJMUl3WmTvlAFqfo4wIlDssvw/ 800w, http://yourshot.nationalgeographic.com/u/fQYSUbVfts-T7odkrFJckdiFeHvab0GWOfzhj7tYdC0uglagsDq-TNIRQ3qELJppd8ZLNRvnhakVub3VQlC2V5_yAGtyNoIAtaUObf5sBn_PGVEIlVVcerfj6l1ovYy2W4h7lMAkEVLdiCZKr9S9wuwge1myLnbvmEvxjeQ-HOfdmgprhGjqn4pNtAwmKvwU6-HA9n31rVvmbG5touqPt59wY3s/ 1024w, http://yourshot.nationalgeographic.com/u/fQYSUbVfts-T7odkrFJckdiFeHvab0GWOfzhj7tYdC0uglagsDq-TNIRQ3qELJppd8ZLNRvnhakVub3VQlC2V5_yAGtyNoIAtaUObf5sBn_PGVEIlVVcerfj6l1ovYy2W4h7lMAkEVLdiCZKr9S9wuwge1myLnbvmEvxjeQ-HOfdmgprhGjqn4pNtAwmKvwU6-dIS7lLTB0CSOM4O0wlvLx9pDnb/ 1600w, http://yourshot.nationalgeographic.com/u/fQYSUbVfts-T7odkrFJckdiFeHvab0GWOfzhj7tYdC0uglagsDq-TNIRQ3qELJppd8ZLNRvnhakVub3VQlC2V5_yAGtyNoIAtaUObf5sBn_PGVEIlVVcerfj6l1ovYy2W4h7lMAkEVLdiCZKr9S9wuwge1myLnbvmEvxjeQ-HOfdmgprhGjqn4pNtAwmKvwU6FcgiBNz-Nj7_J7e61F6_8oUXwoV/ 2048w" sizes="730px" data-reactid=".5.0.1.0.0.$http=2//www=1nationalgeographic=1com/photography/photo-of-the-day/2017/01/boy-buffalo-thailand.0.0.0.0.0.0.0.0">
Как вы можете видеть, есть несколько ссылок, поэтому мы также пытались разделить код и получить только один из них, но jsoup не похоже, чтобы получить какой-либо кода в первую очередь. Вот код:
Document doc = Jsoup.connect("http://www.nationalgeographic.com/photography/photo-of-the-day").get();
Elements img = doc.select("div.modules-images__placeholder source[srcset]");
imgSrc = img.attr("srcset"); //srcset
String[] splitStr = imgSrc.split("\\s+");
int n = splitStr.length;
imgSrc = splitStr[n-2];
//Download Image from URL
InputStream input = new java.net.URL(imgSrc).openStream();
//Decode Bitmap
bitmap = BitmapFactory.decodeStream(input);
myWallpaperManager.setBitmap(bitmap);
Ваш ответ выглядел неплохо, но он все еще не работает. Если мы попробуем запустить этот код http://prnt.sc/dyl8z7, чтобы получить еще одну случайную фотографию, она успешно берет ее и помещает в качестве фона на телефон. Но если мы запустим код с национальной географической ссылкой и вашим решением http://prnt.sc/dyl81r, он ничего не делает ... – Donev
Из того, что я вижу, вы отправили одну и ту же фотографию дважды. На мой ответ я предполагал, что img.attr («srcset») возвращает то, что является атрибутом srcset (который я почти уверен, что он делает). Я не тестировал Jsoup, но он должен работать одинаково. Я попытаюсь посмотреть, что происходит, как только я вернусь домой. – Rexcantor64
Да, я отредактировал комментарий и сейчас две разные фотографии.Я подозреваю, что проблема в том, что он не возвращает то, что находится внутри атрибута srcset. Я не очень опытный и не знаю, как это проверить, поэтому, если вы сможете заглянуть в него, когда будете дома, это будет очень надежным. Благодарю. – Donev