2014-12-23 2 views
1

В настоящее время я использую JSoup, чтобы вытащить различные вещи из нескольких сайтов. Однако у меня проблемы с изображениями.JSoup - Извлечение изображений только находит первое изображение

HTML-код что-то вдоль линий этого:

<div id="bK5ZEcg" class="post"> 
    <a class="image-list-link" href="/r/GetMotivated/bK5ZEcg" data-page="0"> 
    <img alt="" src="//i.imgur.com/bK5ZEcgb.jpg" original-title=""> 
    </a> 
</div> 

Веб-страница представляет собой галерею, где тот же код размещен выше для каждого изображения с соответствующими ссылками.

Я написал код, как показано ниже, ища изображения, заканчивающиеся на «.jpg», чтобы найти все изображения на странице и извлечь их в массив.

protected ArrayList<String> doInBackground(ArrayList<String>... params) 
    { 
     // TODO Auto-generated method stub 

     try 
     { 
      Document doc = Jsoup.connect(url).get(); 
      Log.d("JSoup Connection", "connected..."); 


      //Extract images from site 
      Elements elemImages = doc.select("img[src$=.jpg]"); 


      for(Element e : elemImages) 
      { 
       Log.d("Single Image",e.absUrl("src")); 

       //Will add to array later, just trying to get output for now 
       //receivedImages.add(e.absUrl("src").toString()); 
      } 

     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 

     Log.d("Image collect", "Images Collected"); 
     return receivedImages; 

    } 

Когда я запускаю мой код он находит только одно изображение на веб-сайте, несмотря на наличие многочисленных изображений для извлечения.

12-22 19:43:48.275: I/System.out(786): connected... 
12-22 19:43:48.335: D/Single Image(786): http://i.imgur.com/rCjTX81l.jpg 
12-22 19:43:48.335: D/Image collect(786): Images Collected 

Я уже некоторое время отлаживаю и пробую разные синтаксисы выбора. Может ли кто-нибудь помочь мне или указать мне в правильном направлении?

Также простите мое неряшливое кодирование. Я все еще разбираюсь в разработке Android.

Благодаря куча

EDIT: Забыли включить веб-сайт я разбор. http://imgur.com/r/GetMotivated

+0

Уверены ли вы, что есть больше изображений, которые заканчиваются на .jpg по URL-адресу, который вы утилизируете? –

+0

Синтаксис выбора делает именно то, что вы хотите. Так что не беспокойтесь об этом. Не могли бы вы предоставить страницу, которую вы пытаетесь разобрать? – alkis

+0

Извините, мне потребовалось некоторое время, чтобы ответить, я отправил этот вопрос поздно вечером. Да, конечно, страница: http://imgur.com/r/GetMotivated – IrishCrf

ответ

0

Ok. Поэтому мне удалось воспроизвести его. Если запустить это на рабочем столе, но эмулировать мобильное устройство и выскабливание мобильный сайт, вы получите только один значок

Document doc = Jsoup.connect("http://m.imgur.com/r/GetMotivated").userAgent("Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30").get(); 

Решение указать другой агент пользователя, который принадлежит к настольной версии браузера и очистить место на рабочем столе , а не мобильный. Попробуйте

Document doc = Jsoup.connect("http://imgur.com/r/GetMotivated") 
        .userAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36") 
        .get(); 

Причины, почему это происходит из-за генерацию HTML клиента мобильного сайта. Откройте Chrome на рабочем столе, зайдите в инструменты разработчика, откройте мобильный эмулятор и посетите мобильный сайт. Нажмите ctrl + u, это html, который jsoup анализирует, и вы увидите, что контент не финализирован, но имеет много тегов (угловых?), Которые бесполезны для jsoup.

Указав настольный пользовательский агент, вы запрашиваете настольную версию сайта, которая генерирует html по-другому, что полезно для jsoup. Имейте в виду, что jsoup будет разбирать все, что вы видите, нажимая ctrl + u, находясь на хроме, ничего больше.

+0

В этом была проблема. Я не могу поверить, что я пропустил это, когда это кажется таким очевидным сейчас. Не повторите ту же ошибку дважды! Еще раз спасибо чувак – IrishCrf

Смежные вопросы