2015-07-23 3 views
1

Я хочу найти идентификатор html-объектов с помощью Jsoup.Как получить идентификатор из html объектов с помощью Jsoup - Java

<object id="gamediv" </object> 

Я пробовал:

String startingURL = "http://www.example.com"; 
try { 
    doc = Jsoup.connect(startingURL) 
      .userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0") 
      .referrer("http://www.google.com") 
      .timeout(1000*5) //it's in milliseconds, so this means 5 seconds.    
      .get(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

Elements get = doc.select("object"); 

for (Element elem : get){ 
    if (get.attr("id") != null){ 
     System.out.println(get.attr("id")); 
    } 
} 

, но ничего не происходит. Любая помощь, пожалуйста?

+0

Это отлично работает для меня (я исправил ваш пример ''). Вы уверены, что 'object' является частью' doc'? Вы пытались напечатать его 'System.out.println (doc);'? – Pshemo

+0

Вам также нужно изменить 'get.attr (" id ")' на 'elem.attr (" id ")'. – Pshemo

+0

Также используйте 'doc.select (" object [id] ");' для выбора только 'object' с атрибутом' id' (это позволит вам пропустить 'attr (" id ")! = Null' check) – Pshemo

ответ

0

Прежде всего, вы можете свести свой код до простого.

for (Element elem : doc.select("object[id]")) { 
    System.out.println(elem.attr("id")); 
} 

Во-вторых, если doc не содержит object вы ищете, то это означает, что она не была послана ему сервером. Там может быть несколько причин, где наиболее часто из них являются

  • неправильный заголовок пользовательского агента,
  • этот HTML код генерируется через браузер JavaScript.

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

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