2014-02-06 3 views
-1

Я просмотрел несколько сообщений о разборе и т. Д. Большинство ответов, которые я видел, рекомендовали человеку использовать библиотеку или что-то еще. Моя проблема прямо сейчас заключается в создании алгоритма, который будет получать точную информацию, которую я хочу. Моя цель состоит в том, чтобы получить 2 статуса с веб-сайта Weather для закрытия школ. Я начал использовать Jsoup по рекомендации кого-то, но мне нужна помощь.Java чтение информации с веб-сайта с помощью Jsoup

WEB-страница: Click here

Изображение: Click here

Пример источника веб-страницы: click here

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

Вот пример того, что я хочу сделать. (Судо код)

Document doc = connect(to url); 
Element schoolName1 = doc.lookForText(htmlLineHere/schoolname); 

String status1 = schoolName.getNext().text();//suppose this gets the line right after which should be my status and then cleans off the Html. 

Это то, что я прямо сейчас

public static SchoolClosing lookupDebug() throws IOException { 
     final ArrayList<String> Status = new ArrayList<String>(); 

     try { 
      //connects to my wanted website 
      Document doc = Jsoup.connect("http://www.10tv.com/content/sections/weather/closings.html").get(); 
      //selects/fetches the line of code I want 
      Element schoolName = doc.html("<td valign="+"top"+">Athens City Schools</td>"); 
      //an array of Strings where I am going to add the text I need when I get it 
      final ArrayList<String> temp = new ArrayList<String>(); 
      //checking if its fetching the text 
      System.out.println(schoolName.text()); 
      //add the text to the array 
      temp.add(schoolName.text()); 
      for (int i = 0; i <= 1; i++) { 
       final String[] tempStatus = temp.get(i).split(" "); 
       Status.add(tempStatus[0]); 
      } 
     } catch (final IOException e) { 
      throw new IOException("There was a problem loading School Closing Status"); 
     } 
     return new SchoolClosing(Status); 
    } 
+0

Любая помощь поможет! – Yuriah

+0

все люди, задающие вопросы здесь, хотели бы оказать какую-то помощь своей проблеме. Не нужно кричать. – eis

+0

Прошу прощения, это то, что он не получил никакого внимания, и я опубликовал это вчера. – Yuriah

ответ

2
Document doc = Jsoup.connect(
     "http://www.10tv.com/content/sections/weather/closings.html") 
     .get(); 
for (Element tr : doc.select("#closings tr")) { 
    Element tds = tr.select("td").first(); 
    if (tds != null) { 
     String county = tr.select("td:eq(0)").text(); 
     String schoolName = tr.select("td:eq(1)").text(); 
     String status = tr.select("td:eq(2)").text(); 
     System.out.println(String.format(
       "county: %s, schoolName: %s, status: %s", county, 
       schoolName, status)); 
    } 
} 

выход:

county: Athens, schoolName: Beacon School, status: Two-hour Delay 
county: Franklin, schoolName: City of Grandview Heights, status: Snow Emergency through 8pm Thursday 
county: Franklin, schoolName: Electrical Trades Center, status: All Evening Activities Cancelled 
county: Franklin, schoolName: Hilock Fellowship Church, status: PM Services Cancelled 
county: Franklin, schoolName: International Christian Center, status: All Evening Activities Cancelled 
county: Franklin, schoolName: Maranatha Baptist Church, status: PM Services Cancelled 
county: Franklin, schoolName: Masters Commission New Covenant Church, status: Bible Study Cancelled 
county: Franklin, schoolName: New Life Christian Fellowship, status: All Activities Cancelled 
county: Franklin, schoolName: The Epilepsy Foundation of Central Ohio, status: All Evening Activities Cancelled 
county: Franklin, schoolName: Washington Ave United Methodist Church, status: All Evening Activities Cancelled 

или в цикле:

for (Element tr : doc.select("#closings tr")) { 
    System.out.println("----------------------"); 
    for (Element td : tr.select("td")) { 
     System.out.println(td.text()); 
    } 
} 

, что дает:

---------------------- 
Athens 
Beacon School 
Two-hour Delay 
---------------------- 
Franklin 
City of Grandview Heights 
Snow Emergency through 8pm Thursday 
---------------------- 
Franklin 
Electrical Trades Center 
All Evening Activities Cancelled 
... 
+0

Спасибо за великолепный ответ! Хотел бы я выразить, насколько я благодарен. Я могу делать то, что мне нужно, так как вы отформатировали его отлично. – Yuriah

+0

Это то, что делает im, его snapchat моей программы. http://i.imgur.com/geEalQK.png – Yuriah

+0

удачи! счастлив, что смогу помочь :) –

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