title: How to parse HTML table using jsoup?
body: <p>I am trying to parse HTML using jsoup. This is my first time working with jsoup and I read some tutorial on it as well. Below is my HTML table which I am trying to parse -</p>
  
  <p>If you see my below table, it has three <code>tr</code> as of now (I have shorten it down to have three table rows just for understanding purpose but in general it will be more). Now I would like to extract <code>Cluster Name</code> from my below table and it's corresponding <code>host name</code> so for example - I would extract <code>Titan</code> as cluster name and all its hostname whose status are down.</p>
  
  <p>As you can see below for <code>Titan</code> cluster name, I have two hostnames <code>machineA.abc.com</code> and <code>machineB.abc.com</code> in which <code>machineA</code> status is <code>up</code> but <code>machineB</code> status is <code>down</code>.</p>
  
  <p>So I will print out <code>Titan</code> as cluster name and print out <code>machineB.abc.com</code> as the hostname since it is down. Is this possible to do using jsoup?</p>
  
  <pre><code>&lt;table border=1&gt;
     &lt;tr&gt;
        &lt;td&gt;&amp;nbsp;&lt;/td&gt;
        &lt;td&gt;&amp;nbsp;&lt;/td&gt;
        &lt;td&gt;Alert&lt;/td&gt;
        &lt;td&gt;Cluster Name&lt;/td&gt;
        &lt;td&gt;IP addr&lt;/td&gt;
        &lt;td&gt;Host Name&lt;/td&gt;
        &lt;td&gt;Type&lt;/td&gt;
        &lt;td&gt;Status&lt;/td&gt;
        &lt;td&gt;Free&lt;/td&gt;
        &lt;td&gt;Version&lt;/td&gt;
        &lt;td&gt;Restart Time&lt;/td&gt;
        &lt;td&gt;UpTime(Days)&lt;/td&gt;
        &lt;td&gt;Last probed&lt;/td&gt;
        &lt;td&gt;Last up&lt;/td&gt;
     &lt;/tr&gt;
     &lt;tr bgcolor="ffffff"&gt;
        &lt;td&gt;&lt;a href=showlog?ip_addr=127.0.0.1&gt;Hist&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=http://127.0.0.1:8080/test?full=y&gt;VI&lt;/a&gt;&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;&amp;nbsp&lt;/td&gt;
        &lt;td&gt;Titan&lt;/td&gt;
        &lt;td&gt;10.100.111.77&lt;/td&gt;
        &lt;td&gt;machineA.abc.com&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;up&lt;/td&gt;
        &lt;td bgcolor="ffffff" align=right&gt;88%&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;2.0.5-SNAPSHOT&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;2014-07-04 01:49:08,220&lt;/td&gt;
        &lt;td bgcolor="ffffff" align=right&gt;381&lt;/td&gt;
        &lt;td&gt;07-14 20:01:59&lt;/td&gt;
        &lt;td&gt;07-14 20:01:59&lt;/td&gt;
     &lt;/tr&gt;
     &lt;tr bgcolor="ffffff"&gt;
        &lt;td&gt;&lt;a href=showlog?ip_addr=127.0.0.1&gt;Hist&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=http://127.0.0.1:8080/test?full=y&gt;VI&lt;/a&gt;&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;&amp;nbsp&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
        &lt;td&gt;10.200.192.99&lt;/td&gt;
        &lt;td&gt;machineB.abc.com&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;down&lt;/td&gt;
        &lt;td bgcolor="ffffff" align=right&gt;85%&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;2.0.5-SNAPSHOT&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;2014-07-04 01:52:20,613&lt;/td&gt;
        &lt;td bgcolor="ffffff" align=right&gt;103&lt;/td&gt;
        &lt;td&gt;07-14 20:01:59&lt;/td&gt;
        &lt;td&gt;07-14 20:01:59&lt;/td&gt;
     &lt;/tr&gt;
  &lt;/table&gt;
  </code></pre>
  
  <p>So far, I am able to extract whole HTML table using jsoup but not sure how would I extract cluster name and the hostnames which are down -</p>
  
  <pre><code>URL url = new URL("url_name");
  Document doc = Jsoup.parse(url, 3000);
  </code></pre>
  
  <p><strong>Update:-</strong></p>
  
  <p>I might have two cluster name in the table as shown below -</p>
  
  <pre><code>&lt;table border=1&gt;
     &lt;tr&gt;
        &lt;td&gt;&amp;nbsp;&lt;/td&gt;
        &lt;td&gt;&amp;nbsp;&lt;/td&gt;
        &lt;td&gt;Alert&lt;/td&gt;
        &lt;td&gt;Cluster Name&lt;/td&gt;
        &lt;td&gt;IP addr&lt;/td&gt;
        &lt;td&gt;Host Name&lt;/td&gt;
        &lt;td&gt;Type&lt;/td&gt;
        &lt;td&gt;Status&lt;/td&gt;
        &lt;td&gt;Free&lt;/td&gt;
        &lt;td&gt;Version&lt;/td&gt;
        &lt;td&gt;Restart Time&lt;/td&gt;
        &lt;td&gt;UpTime(Days)&lt;/td&gt;
        &lt;td&gt;Last probed&lt;/td&gt;
        &lt;td&gt;Last up&lt;/td&gt;
     &lt;/tr&gt;
     &lt;tr bgcolor="ffffff"&gt;
        &lt;td&gt;&lt;a href=showlog?ip_addr=127.0.0.1&gt;Hist&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=http://127.0.0.1:8080/test?full=y&gt;VI&lt;/a&gt;&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;&amp;nbsp&lt;/td&gt;
        &lt;td&gt;Titan&lt;/td&gt;
        &lt;td&gt;10.100.111.77&lt;/td&gt;
        &lt;td&gt;machineA.abc.com&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;up&lt;/td&gt;
        &lt;td bgcolor="ffffff" align=right&gt;88%&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;2.0.5-SNAPSHOT&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;2014-07-04 01:49:08,220&lt;/td&gt;
        &lt;td bgcolor="ffffff" align=right&gt;381&lt;/td&gt;
        &lt;td&gt;07-14 20:01:59&lt;/td&gt;
        &lt;td&gt;07-14 20:01:59&lt;/td&gt;
     &lt;/tr&gt;
     &lt;tr bgcolor="ffffff"&gt;
        &lt;td&gt;&lt;a href=showlog?ip_addr=127.0.0.1&gt;Hist&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=http://127.0.0.1:8080/test?full=y&gt;VI&lt;/a&gt;&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;&amp;nbsp&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
        &lt;td&gt;10.200.192.99&lt;/td&gt;
        &lt;td&gt;machineB.abc.com&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;down&lt;/td&gt;
        &lt;td bgcolor="ffffff" align=right&gt;85%&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;2.0.5-SNAPSHOT&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;2014-07-04 01:52:20,613&lt;/td&gt;
        &lt;td bgcolor="ffffff" align=right&gt;103&lt;/td&gt;
        &lt;td&gt;07-14 20:01:59&lt;/td&gt;
        &lt;td&gt;07-14 20:01:59&lt;/td&gt;
     &lt;/tr&gt;
     &lt;tr bgcolor="ffffff"&gt;
        &lt;td&gt;&lt;a href=showlog?ip_addr=127.0.0.1&gt;Hist&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=http://127.0.0.1:8080/test?full=y&gt;VI&lt;/a&gt;&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;&amp;nbsp&lt;/td&gt;
        &lt;td&gt;Goldy&lt;/td&gt;
        &lt;td&gt;10.100.111.77&lt;/td&gt;
        &lt;td&gt;machineH.pqr.com&lt;/td&gt;
        &lt;td&gt;&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;up&lt;/td&gt;
        &lt;td bgcolor="ffffff" align=right&gt;88%&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;2.0.5-SNAPSHOT&lt;/td&gt;
        &lt;td bgcolor="ffffff"&gt;2014-07-04 01:49:08,220&lt;/td&gt;
        &lt;td bgcolor="ffffff" align=right&gt;381&lt;/td&gt;
        &lt;td&gt;07-14 20:01:59&lt;/td&gt;
        &lt;td&gt;07-14 20:01:59&lt;/td&gt;
     &lt;/tr&gt;       
  &lt;/table&gt;
  </code></pre>
  
  <p>Now if you see above I have two cluster name - one is <code>Titan</code> and other is <code>Goldy</code> so I want to find all the machines which are down for <code>Titan</code> cluster name only.</p>