2015-02-05 3 views
0

theFirst off Я очень новичок в кодировании в java, и я использую Android Studio. Я использую Jsoup, чтобы перейти к URL-адресу и получить исходный код HTML. Мой код успешно делает это, теперь мне нужно проанализировать HTML для одной конкретной строки. Строка, которая мне нужна из HTML, содержит ссылку, но мне не нужен адрес ссылки, просто строка, которая отображается как ссылка. Это код из класса, я использую для достижения этой цели:Использование Jsoup для разбора html

private class FetchAnton extends AsyncTask<Void, Void, Void> { 

    String price; 
    String url = "http://www.antoncoop.com/markets/cash.php"; 
    Elements hrefEles; 
    String value = null; 
    String html = null; 
    Document doc = null; 

    @Override 
    protected Void doInBackground(Void... params) { 

     try { 
      //Connect to website 
      html = Jsoup.connect(url).get().toString(); 

      if (html != null && html.length() > 0) { 
       doc = Jsoup.parse(html);   
       if (doc != null) { 
        /** Get all A tag element with HREF attribute like '/markets/cashchart.php?c=2246' **/ 
        hrefEles = doc.select("a[href*=/markets/cashchart.php?c=2246]"); 

        if (hrefEles != null && hrefEles.size() > 0) { 
         for (Element e: hrefEles) { 
          //value = e.ownText(); 
          // break; 
         } 

         price = value; 
        } 
       } 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

Вот раздел HTML, что я заинтересован в:

</table> 
<br /> 
<table class="homepage_quoteboard" cellspacing="0" cellpadding="0" border="0" width="100%"> 
<thead> 
<tr class="section"> 
<td colspan="10">Wheat</td> 
</tr> 
<tr> 
<td width="10%">Name</td> 
<td width="10%">Delivery</td> 
<td width="10%">Delivery End</td> 
<td width="10%">Futures Month</td> 
<td width="10%" align="right">Futures Price</td> 
<td width="10%" align="right">Change</td> 
<td width="10%" align="right">Basis</td> 
<td width="10%" align="right">Cash Price</td> 
<td width="10%" align="right">Settlement</td> 
<td width="10%">Notes</td> 
</tr> 
</thead> 
<tbody> 
<script language="javascript">   
writeBidRow('Wheat',-60,false,false,false,0.5,'01/15/2015','02/26/2015','All','&nbsp;','&nbsp;',60,'even','c=2246&l=3519&d=G15',quotes['KEH15'], 0-0); 
writeBidRow('Wheat',-65,false,false,false,0.5,'07/01/2015','07/31/2015','All','&nbsp;','&nbsp;',60,'odd','c=2246&l=3519&d=N15',quotes['KEN15'], 0-0); 
</script> 
</tbody> 
</table> 

Единственный, я заинтересован в этом получении $ 4,91 как строка под названием «цена». Он находится в строке HTML-кода с отступом справа от него. Может ли кто-нибудь сказать мне, какой код использовать для этого?

+0

Имеет ли этот тег какой-либо другой атрибут помимо href, например имя класса или идентификатор? –

+0

Я считаю, что имя класса «четное». – user3381831

ответ

0

Все описано в следующих источниках с комментариями.

@Override 
protected Void doInBackground(Void... params) { 
    String value = null; 
    String html = null; 
    Document doc = null; 
    Elements hrefEles = null; 

    try { 
     //Connect to website 
     html = Jsoup.connect(url).get().toString(); 

     if (html != null && html.length() > 0) { 
      doc = Jsoup.parse(html); 

      if (doc != null) { 
       /** Get all A tag element with HREF attribute like '/markets/cashchart.php?c=2246' **/ 
       hrefEles = doc.select("a[href*=/markets/cashchart.php?c=2246]"); 

       if (hrefEles != null && hrefEles.size() > 0) { 
        for (Element e: hrefEles) { 
         value = e.ownText(); 
         break; 
        } 

        System.out.println("value: " + value); 
       } 
      } 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 
+0

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

+0

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

+0

У меня все еще есть проблемы ... Я возвращаю пустую строку. Я остановил выполнение кода на определенной строке и отобразил html-файл на экране. И похоже, что html-файл на экране телефона не идентичен html, который я получил из моего браузера. Я опубликовал html, который я получил из DOM Explorer в инструментах разработчика в IE 11. Похоже, мне придется продолжать пытаться завтра, но большое вам спасибо за помощь, я уверен, что ваш код будет работать на меня, когда я выясню что происходит с различиями в html. Я очень ценю вашу помощь. – user3381831

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