[英]Limiting what jsoup retrieves
我在學習使用jsoup的過程中很有趣,並且已經成功地從網站上檢索和顯示了數據,但是現在,如果有人可以幫助,我希望獲得一些進一步的指導。
使用下面的代碼返回所有表行30+,如何只說出這些行的前10行?
也
當返回這些行及其上的數據時,數據之間的行中存在間隙/空格,行之間的空格很好,但它是我想擺脫的行中的空格,我該如何忽略這些空格/間隙?
到目前為止,我的代碼...
package com.example.shiftzer;
import java.io.IOException;
import java.util.ArrayList;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity{
TextView textView1;
ListView shippingList;
public static final String APP_PREFERENCES = "AppPrefs";
SharedPreferences settings;
SharedPreferences.Editor prefEditor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
//rest of the code
textView1 = (TextView)findViewById(R.id.textView1);
shippingList = (ListView) findViewById(R.id.listView1);
settings = getSharedPreferences(APP_PREFERENCES, MODE_PRIVATE);
prefEditor = settings.edit();
new VTSTask().execute();//starts AsyncTask in private class VTSTask to get shipping info
}
private class VTSTask extends AsyncTask<Void, Void, ArrayList<String>> {
ArrayList<String> arr_shipping=new ArrayList<String>();
/**
* @param args
*/
@Override
protected ArrayList<String> doInBackground(Void... params) {
Document doc;
String shippingList;
try {
doc = Jsoup.connect("https://vts.mhpa.co.uk/main_movelistb.asp").get();
Elements tableRows = doc.select("table.dynlist tr td");
for (Element element : tableRows) {
shippingList = element.text();
arr_shipping.add(shippingList);// add value to ArrayList
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return arr_shipping;//<< Return ArrayList from here
}
@Override
protected void onPostExecute(ArrayList<String> result) {
//TextView tVShipping= (TextView)findViewById(R.id.textView2);
shippingList = (ListView) findViewById(R.id.listView1);
ArrayAdapter<String> adapter =
new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_1,
android.R.id.text1);
for (String shipping_result : result)
{
adapter.add(shipping_result);
}
// Assign adapter to ListView
shippingList.setAdapter(adapter);
}
}
}
謝謝。
編輯:
try {
doc = Jsoup.connect("https://vts.mhpa.co.uk/main_movelistb.asp").get();
Elements tableRows = doc.select("table.dynlist tr td");
tableRows.size();
for(int i = 0; i < 10; i++){
tableRows.get(i);
shippingList = tableRows.get(i).text() +"\n";
arr_shipping.add(shippingList);// add value to ArrayList
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return arr_shipping;//<< return ArrayList from here
}
元素沒有使用for(Element element:tableRows),而是使用size方法。
因此,您應該能夠對大小進行一些驗證,然后簡單地
for(int i = 0; i < 10; i++){
tableRows.get(i);
}
得到十個
至於空格,在將它們存儲在arraylist中之前,只需使用正則表達式並刪除空格即可。
http://www.vogella.com/articles/JavaRegularExpressions/article.html
嘗試這個
import java.io.IOException;
import java.util.ArrayList;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
public class test
{
static ArrayList<String> arr_shipping=new ArrayList<String>();
public static void main(String args[]) throws IOException
{
try {
Document doc = Jsoup.connect("https://vts.mhpa.co.uk/main_movelistb.asp").timeout(600000).get();
Elements tableRows = doc.select("table.dynlist tr:not(:eq(0))");
tableRows.size();
for(int i = 0; i < 10; i++){
//tableRows.get(i);
String shippingList =tableRows.get(i).text() +"\n";
arr_shipping.add(shippingList);// add value to ArrayList
System.out.println(shippingList);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// return arr_shipping;//<< return ArrayList from here
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.