2016-04-04 6 views
1

Ich Scrapping Daten von einer lokalen HTML-Seite in Android Studio und anstelle der richtigen Informationen angezeigt wird alles, was es angezeigt wird, ist ein leerer Bildschirm. Die Informationen werden nicht aus der HTML-Datei übernommen (sie wird nicht im Protokoll angezeigt). Unten ist ein Hauptcode. Wer weiß, wie man es repariert?Scrapping von Daten aus HTML-Datei mit Java und JSoup - Android Studio

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     try { 
      StringBuilder buf=new StringBuilder(); 
      InputStreamReader inputStream = new InputStreamReader(getAssets().open("filename.html")); 
      BufferedReader bufferedReader = new BufferedReader(inputStream); 
      String str; 
      while ((str=bufferedReader.readLine()) != null) { 
       buf.append(str); 
      } 
      Document doc = Jsoup.parse(buf.toString()); 
      StringBuilder sb = new StringBuilder(); 

      Elements tableElements = doc.select("td[colspan='1']"); 
      TextView textView = (TextView)findViewById(R.id.text_view); 
      for (Element td : tableElements) { 
       sb.append(td.text() + "\n"); 
       System.out.println(td.text()); 
      } 
      textView.setText(sb.toString()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

Unten ist die HTML, die ich versuche zu kratzen. Ich möchte die Zeiten wie "9:00" und "9:15" abkratzen. Auch "Sound", "P.Mann", "P2016", "Schiff", "P2015", "K.Lion" und "22-29, 32-36".

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
<html xmlns='http://www.w3.org/1999/xhtml'> 
 
    <head> 
 
    <title>timetable.html</title> 
 
    <meta http-equiv='content-disposition', content='attachment;filename=timetable.html'> 
 
     <meta http-equiv="Content-Type" content="application/octet-stream" /> 
 

 
     <style>body {background-color:white;} body,td { font-family: arial; }   </style> 
 
    </head> 
 
    <data> 
 
     <body> 
 
     <table cellspacing='0' border='0' width='100%' > 
 
      <col align='left' /> 
 
      <col align='center' /> 
 
      <col align='right' /> 
 
     </data> 
 
     <tr> 
 
      <td/> 
 
      <td/> 
 
      <td/> 
 
     </tr> 
 
     </table> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     <table cellspacing='0' border='0' width='100%' > 
 
     <col align='left' /> 
 
     <col align='center' /> 
 
     <col align='right' /> 
 
     <tr> 
 
      <td/> 
 
      <td/> 
 
      <td/> 
 
     </tr> 
 
     </table> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     <table cellspacing='0' border='0' width='100%' > 
 
     <col align='left' /> 
 
     <col align='center' /> 
 
     <col align='right' /> 
 
     <tr> 
 
      <td/> 
 
      <td/> 
 
      <td/> 
 
     </tr> 
 
     </table> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     <table cellspacing='0' border='0' width='100%' > 
 
     <col align='left' /> 
 
     <col align='center' /> 
 
     <col align='right' /> 
 
     <tr> 
 

 
      <td> 
 
      <table border='0' width='100%'> 
 
       <tr> 
 
       <td width='40%' align='left' valign='middle'> 
 
        <font face='arial' size='3'> 
 
        <b>The Year<font size='1'> 
 
         </td> 
 
         <td width='20%' align='center' valign='middle'> 
 
         <font face='arial' size='1'>ICOM</td> 
 
         <td width='40%' align='right' valign='middle'> 
 
          <font face='arial' size='2'> 
 
          <b>Weeks selected for output: 26 (22 Feb 2016-28 Feb 2016)</td> 
 
          </td> 
 
          <td/> 
 
          <td/> 
 
         </tr> 
 
         </table> 
 
        </td> 
 
        </tr> 
 
       </table> 
 
       <table cellspacing='0' border='1'> 
 
        <tr> 
 
        <td/> 
 

 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>9:00</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>9:15</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>9:30</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>9:45</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>10:00</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>10:15</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>10:30</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>10:45</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>11:00</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>11:15</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>11:30</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>11:45</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>12:00</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>12:15</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>12:30</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>12:45</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>13:00</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>13:15</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>13:30</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>13:45</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>14:00</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>14:15</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>14:30</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>14:45</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>15:00</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>15:15</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>15:30</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>15:45</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>16:00</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>16:15</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>16:30</font> 
 
        </td> 
 
        <td bgcolor='#C0C0C0' colspan='1'> 
 
         <font color='#FFFFFF'>16:45</font> 
 
        </td> 
 
        </tr> 
 
        <tr > 
 
        <td style="border-bottom:3px solid #000000;" rowspan='1' bgcolor='#C0C0C0'> 
 
         <font color='#FFFFFF'>Monday</font> 
 
        </td> 
 
        <td style="border-bottom:3px solid #000000;" colspan='12' rowspan='1' > 
 

 
         <table cellspacing='0' border='0' width='100%'> 
 
         <col align='left' /> 
 
         <tr> 
 
          <td align='left'> 
 
          <font color='#FF0000'>Sound</font> 
 
          </td> 
 
         </tr> 
 
         </table> 
 
         <table cellspacing='0' border='0' width='100%'> 
 
         <col align='left' /> 
 
         <col align='right' /> 
 
         <tr> 
 
          <td align='left'> 
 
          <font color='#000000'>P2016</font> 
 
          </td> 
 
          <td align='right'> 
 
          <font color='#008000'>P.Man</font> 
 
          </td> 
 
         </tr> 
 
         </table> 
 
         <table cellspacing='0' border='0' width='100%'> 
 
         <col align='left' /> 
 
         <tr> 
 
          <td align='left'> 
 
          <font color='#000080'>22-29, 32-36</font> 
 
          </td> 
 
         </tr> 
 
         </table> 
 

 
        </td> 
 
        <td style="border-bottom:3px solid #000000;" >&nbsp;</td> 
 
        <td style="border-bottom:3px solid #000000;" >&nbsp;</td> 
 
        <td style="border-bottom:3px solid #000000;" >&nbsp;</td> 
 
        <td style="border-bottom:3px solid #000000;" >&nbsp;</td> 
 
        <td style="border-bottom:3px solid #000000;" colspan='4' rowspan='1' > 
 

 
         <table cellspacing='0' border='0' width='100%'> 
 
         <col align='left' /> 
 
         <tr> 
 
          <td align='left'> 
 
          <font color='#FF0000'>Ship</font> 
 
          </td> 
 
         </tr> 
 
         </table> 
 
         <table cellspacing='0' border='0' width='100%'> 
 
         <col align='left' /> 
 
         <col align='right' /> 
 
         <tr> 
 
          <td align='left'> 
 
          <font color='#000000'>P2015</font> 
 
          </td> 
 
          <td align='right'> 
 
          <font color='#008000'>K.Loin</font> 
 
          </td> 
 
         </tr> 
 
         </table> 
 
         <table cellspacing='0' border='0' width='100%'> 
 
         <col align='left' /> 
 
         <tr> 
 
          <td align='left'> 
 
          <font color='#000080'>22-29, 32-36</font> 
 
          </td> 
 
         </tr> 
 
         </table> 
 

 
        </td> 
 
        <td style="border-bottom:3px solid #000000;" colspan='12' rowspan='1' > 
 

 
         <table cellspacing='0' border='0' width='100%'> 
 
         <col align='left' /> 
 
         <tr> 
 
          <td align='left'> 
 
          <font color='#FF0000'>Mobility</font> 
 
          </td> 
 
         </tr> 
 
         </table> 
 
         <table cellspacing='0' border='0' width='100%'> 
 
         <col align='left' /> 
 
         <col align='right' /> 
 
         <tr> 
 
          <td align='left'> 
 
          <font color='#000000'>P2222</font> 
 
          </td> 
 
          <td align='right'> 
 
          <font color='#008000'>D.Met</font> 
 
          </td> 
 
         </tr> 
 
         </table> 
 
         <table cellspacing='0' border='0' width='100%'> 
 
         <col align='left' /> 
 
         <tr> 
 
          <td align='left'> 
 
          <font color='#000080'>22-29, 32-36</font> 
 
          </td> 
 
         </tr> 
 
         </table> 
 

 
        </td> 
 
        </tr>

Antwort

0

Bearbeiten Sie Ihre Selektoren "Sound" schließen "P.Mann", "P2016", "Schiff", "P2015", "K.Lion" und „22-29 , 32-36" :

Elements tableElements = doc.select("td[colspan='1'],td[align='left'],td[align='right']"); 
+0

Aber nichts steht vor der Tür, sein mit Datei Teil 'Inputinput = new Input (getAssets() open ("filename.html").) Zu tun; BufferedReader bufferedReader = neuer BufferedReader (inputStream); ' Ich fügte sie hinzu und es kommt immer noch "falsch" – DW41

+0

@ DW41 '' buf.toString() 'enthalten den erwarteten Wert? –

+0

Dont Think, wenn ich nach "Sound" im Log suche, kommt nichts heraus – DW41

0

Meine Antwort basiert auf Annahme, dass, da Sie haben uns nicht über irgendwelche Fehler/Ausnahme Zugriff auf die Datei Sie können und zugreifen, es richtig Zusammenhang informieren.

Dies bedeutet, dass Problem in Beziehung gesetzt werden kann

  1. , wie Sie das Parsen/Informationen aus dieser Datei auswählen
  2. , wie Sie drucken Ergebnisinformationen (aber dieser Punkt ist aus meiner Reichweite, da ich nicht bin Android dev aber ich würde annehmen, dass textView.setText(sb.toString()); der richtige Schritt ist).

Also werde ich auf den Punkt konzentrieren 1. Nur Code in Bezug auf einen Teil der Suche sind Sie interessiert ist

Elements tableElements = doc.select("td[colspan='1']"); 

Wenn Sie einen Blick auf Beispiele aus tutorial nehmen oder documentation of Element#select werden Sie diese Syntax für die Auswahl sehen Element basierend auf Attribut ist element[attribute=value] nicht element[attribute='value'].
So verwendet es nicht ' noch ", um den Wert des Attributs zu beschreiben, was bedeutet, dass Sie 1 mit '1' nicht umgeben müssen.

ändern Also Ihren Code

Elements tableElements = doc.select("td[colspan=1]"); 
+0

Über "* Auch" Sound "," P.Mann "," P2016 "," Schiff "," P2015 "," K.Lion "und" 22- 29, 32-36 ". *" Ich werde es dir als Übung überlassen. – Pshemo