我正在尝试使用Jsoup读取HTML中表格的所有行。我的问题是我只读了表中的一些元素,但没有所有的元素,我不知道问题出在哪里。在桌子里面我有大约10个元素,我只能阅读6个,好奇的是我无法阅读这三个元素,也是最后一个元素之一。
这是我的代码:
public class MainActivity extends ActionBarActivity {
ListView listview;
ListViewAdapter adapter;
ProgressDialog mProgressDialog;
ArrayList<HashMap<String, String>> arraylist;
static String EVENTO = "evento";
static String HORARIO = "fecha/hora";
// URL Address
String url = "http://www.eliberico.com/agenda";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the view from listview_main.xml
setContentView(R.layout.listview_main);
// Execute DownloadJSON AsyncTask
new JsoupListView().execute();
}
// Title AsyncTask
private class JsoupListView extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Create a progressdialog
mProgressDialog = new ProgressDialog(MainActivity.this);
// Set progressdialog title
mProgressDialog.setTitle("Descargando Agenda");
// Set progressdialog message
mProgressDialog.setMessage("Buscando...");
mProgressDialog.setIndeterminate(false);
// Show progressdialog
mProgressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
// Create an array
arraylist = new ArrayList<HashMap<String, String>>();
try {
// Connect to the Website URL
Document doc = Jsoup.connect(url).get();
// Identify Table Class "worldpopulation"
for (Element table : doc.select("div[class=css-events-list]"))
{
// Identify all the table row's(tr)
for (Element row : table.select("tr:gt(0)")) {
HashMap<String, String> map = new HashMap<String, String>();
// Identify all the table cell's(td)
Elements tds = row.select("td");
// Retrive Jsoup Elements
// Get the td's
map.put("fecha/hora", tds.get(0).text());
map.put("evento", tds.get(1).text());
arraylist.add(map);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// Locate the listview in listview_main.xml
listview = (ListView) findViewById(R.id.listview);
// Pass the results into ListViewAdapter.java
adapter = new ListViewAdapter(MainActivity.this, arraylist);
// Set the adapter to the ListView
listview.setAdapter(adapter);
// Close the progressdialog
mProgressDialog.dismiss();
}
}
}
这是HTML的一部分
<div class='css-events-list'><h2>nov 2014</h2><table cellpadding="0" cellspacing="0" class="events-table" >
<thead>
<tr>
<th class="event-time" width="150">Fecha/Hora</th>
<th class="event-description" width="*">Evento</th>
</tr>
</thead>
<tbody><tr>
<td>
11/11/2014 - 26/04/2015<br/>
10:00 am - 5:45 pm
</td>
<td>
<a href="http://www.eliberico.com/eventos/women-fashion-power-en-londres" title="Women Fashion Power en Londres">Women Fashion Power en Londres</a>
<br/><i>Design Museum, London London</i>
</td>
</tr></tbody></table><h2>ene 2015</h2><table cellpadding="0" cellspacing="0" class="events-table" >
<thead>
<tr>
<th class="event-time" width="150">Fecha/Hora</th>
<th class="event-description" width="*">Evento</th>
</tr>
</thead>
<tbody><tr>
<td>
03/01/2015 - 12/04/2015<br/>
Todo el día
</td>
<td>
<a href="http://www.eliberico.com/eventos/la-exposicion-art-brick-llega-londres" title="La exposición Art of the Brick llega a Londres">La exposición Art of the Brick llega a Londres</a>
<br/><i>Old Truman Brewery, London </i>
</td>
</tr></tbody></table><h2>feb 2015</h2><table cellpadding="0" cellspacing="0" class="events-table" >
<thead>
<tr>
<th class="event-time" width="150">Fecha/Hora</th>
<th class="event-description" width="*">Evento</th>
</tr>
</thead>
<tbody><tr>
<td>
03/02/2015 - 09/05/2015<br/>
12:00 am
</td>
<td>
<a href="http://www.eliberico.com/eventos/almodovar-y-su-musical-en-londres" title="Almodóvar y su musical en Londres">Almodóvar y su musical en Londres</a>
<br/><i>The Playhouse Theatre, London London</i>
</td>
</tr><tr>
<td>
04/02/2015 - 31/08/2015<br/>
Todo el día
</td>
<td>
<a href="http://www.eliberico.com/eventos/elvis-presley-llega-londres-en-forma-de-exposicion" title="Elvis Presley llega a Londres en forma de exposición">Elvis Presley llega a Londres en forma de exposición</a>
<br/><i>O2 Arena, London London</i>
</td>
</tr><tr>
<td>
07/02/2015 - 31/03/2015<br/>
10:00 am - 5:30 pm
</td>
<td>
<a href="http://www.eliberico.com/eventos/exposicion-fotografias-de-naturaleza-salvaje" title="Exposición fotografías de naturaleza salvaje">Exposición fotografías de naturaleza salvaje</a>
<br/><i>Natural History Museum, London </i>
</td>
</tr><tr>
<td>
09/02/2015 - 10/04/2015<br/>
Todo el día
</td>
<td>
<a href="http://www.eliberico.com/eventos/una-exposicion-del-pintos-barroco-rubens-llega-londres" title="Una exposición del pintor barroco Rubens llega a Londres">Una exposición del pintor barroco Rubens llega a Londres</a>
<br/><i>Royal Academy of Arts, London </i>
</td>
</tr><tr>
<td>
20/02/2015 - 02/04/2015<br/>
Todo el día
</td>
<td>
<a href="http://www.eliberico.com/eventos/arte-urbano-spanish-101" title="Arte urbano ‘Spanish 101’">Arte urbano ‘Spanish 101’</a>
<br/><i>MYA GALLERY, London London</i>
</td>
</tr><tr>
<td>
26/02/2015 - 25/05/2015<br/>
10:00 am - 5:30 pm
</td>
<td>
<a href="http://www.eliberico.com/eventos/exposicion-witches-old-women-album" title="Exposición: The Witches and old Women Album">Exposición: The Witches and old Women Album</a>
<br/><i>The Courtauld Gallery, London London</i>
</td>
</tr></tbody></table><h2>mar 2015</h2><table cellpadding="0" cellspacing="0" class="events-table" >
<thead>
<tr>
<th class="event-time" width="150">Fecha/Hora</th>
<th class="event-description" width="*">Evento</th>
</tr>
</thead>
<tbody><tr>
<td>
06/03/2015 - 17/04/2015<br/>
12:00 am
</td>
<td>
<a href="http://www.eliberico.com/eventos/battersea-spanish-organiza-talleres-de-escritura-en-espanol" title="Battersea Spanish organiza talleres de escritura en español">Battersea Spanish organiza talleres de escritura en español</a>
<br/><i>Battersea Business Centre, London London</i>
</td>
</tr><tr>
<td>
12/03/2015 - 21/03/2015<br/>
10:00 am - 5:00 pm
</td>
<td>
<a href="http://www.eliberico.com/eventos/roman-lokati-expone-en-la-mall-galleries" title="Roman Lokati expone en la Mall Galleries">Roman Lokati expone en la Mall Galleries</a>
<br/><i>Mall Galleries, London London</i>
</td>
</tr></tbody></table>
答案 0 :(得分:0)
table.select("tr:gt(0)")
可能不会按照您的想法行事。
如果你想避免
tr
中的 thead
但希望仅查找来自tbody
的内容,例如此处
<thead>
<tr>
<th class="event-time" width="150">Fecha/Hora</th>
<th class="event-description" width="*">Evento</th>
</tr>
</thead>
<tbody>
<tr>
<td>
11/11/2014 - 26/04/2015<br/>
10:00 am - 5:45 pm
</td>
<td>
<a href="http://www.eliberico.com/eventos/women-fashion-power-en-londres" title="Women Fashion Power en Londres">Women Fashion Power en Londres</a>
<br/><i>Design Museum, London London</i>
</td>
</tr>
然后考虑改变
for (Element table : doc.select("div[class=css-events-list]"))
{
// Identify all the table row's(tr)
for (Element row : table.select("tr:gt(0)")) {
进入
for (Element table : doc.select("div[class=css-events-list] > table > tbody"))
{
for (Element row : table.select("tr")) {