2012-01-20 4 views
1

Я работаю над проектом Android, и сейчас я играю с JSoup для извлечения данных с веб-сайта для приложения.JSoup - Ошибка извлечения содержимого div

Сайт, на который я нацелен, является here.

И я хочу извлечь основной текст информации. XPath для этого DIV является

//div[@id='wikiAbstract']

Мой полный код выглядит следующим образом

public class Main extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    TextView tv = (TextView) findViewById(R.id.textView1); 
    Document doc = null; 

    try { 
     doc = Jsoup.connect("http://www.last.fm/music/Bright+Eyes").get(); 

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

    Element divs = doc.select("div#wikiAbstract").first(); 
    tv.setText(divs.text()); 

}

Однако я получаю исключение нулевого указателя. Я тестировал один и тот же код на других сайтах и ​​divs, и он отлично работает. Я не понимаю, почему это другое.

Я был бы признателен за любую помощь/отзывы от кого-либо, спасибо заранее.

ответ

1

Ах, хорошо, поэтому содержание html от here происходило с мобильной версии сайта last.fm, поэтому div id были разными.

Для тех, кто может столкнуться с этим, вы можете добавить заголовок запроса агента пользователя к соединению, чтобы обеспечить полный сайт испрашивается или просто убедитесь, что вы получите правильные Дивы идентификаторы с мобильного сайта

Document doc = Jsoup.connect(myURL) 
       .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0.1) Gecko/20100101 Firefox/8.0.1") 
       .get(); 
0

Эта полная программа:

public static void main(String[] args) throws IOException { 
    Document doc = Jsoup.connect("http://www.last.fm/music/Bright+Eyes").get(); 
    Element content = doc.select("div#wikiAbstract").first(); 
    System.out.println(content.text()); 
} 

выходы (сокращенная):

Bright Eyes является группа, состоящая в основном из американского певца, гитариста и композитора Конор Оберст. Bright Eyes также имеет мультиинструменталист/продюсер Майк Моджис, клавишник Nate Уолкотта и вращающийся модельный ряд коллаборационистов обращается в первую очередь из Омаха, штат Небраска, и тому ...

... который должен сказать что у вашей ошибки находится в другом месте. Возможно, textView является null?

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