【发布时间】:2012-01-31 20:06:04
【问题描述】:
我在解析以下网站时遇到问题:
http://www.x-rates.com/d/USD/table.html
我对 android 编程非常非常陌生,我正在考虑创建一个货币转换器,但是现在我知道那里有很多,我正在尝试快速跟踪我的编程启动并让自己沉浸在代码中.
我找到了一个试图解释的教程,它对需要特定项目的网站很有帮助。代码如下:
package com.ve.webgrab;
import java.io.IOException;
import java.util.ArrayList;
import android.app.ListActivity;
import android.os.Bundle;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.view.View;
public class WebgrabActivity extends ListActivity {
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
ArrayList<String> tableRowStrings = new ArrayList<String>();
Document doc = null;
try {
doc = Jsoup.connect("http://www.x-rates.com/d/USD/table.html").get();
}
catch (IOException e) {
e.printStackTrace();
}
String testString = "American";
Elements tableRows = doc.select("tr");
for (Element tableRow : tableRows){
if (tableRow.hasText()){
String rowData = tableRow.text();
if(rowData.contains(testString)){
tableRowStrings.add(rowData);
}
}
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, tableRowStrings);
setListAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
String item = (String) getListAdapter().getItem(position);
Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show();
}
}
我需要能够将带有美元的表转换为其他货币,以便我可以将其保存在数据库中,然后将其用于转换。我认为我需要查看的部分是:
String testString = "American";
Elements tableRows = doc.select("tr");
for (Element tableRow : tableRows){
if (tableRow.hasText()){
String rowData = tableRow.text();
if(rowData.contains(testString)){
tableRowStrings.add(rowData);
}
}
}
我需要完成的事情:
-
获取网站:- - 我相信这已经完成了:-
doc = Jsoup.connect("http://www.x-rates.com/d/USD/table.html").get(); 选择网站上对转化率特别感兴趣的表格: - 仍然无法弄清楚这部分。
-
测试表格以确保它是正确的:
String testString = "American"; if(rowData.contains(testString)){ -
将表格上的数据显示到列表视图中,以确保收集到正确的数据:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, tableRowStrings); setListAdapter(adapter); 将表格
<td>分解为国家和转化率,然后将其放入数据库中。
我正在寻找指导,请记住,我对此完全陌生,我想构建这个应用程序以获得学习体验和更大更好的应用程序的跳板,绝对欢迎示例代码,我将不胜感激我能得到的帮助。
【问题讨论】:
-
该网站很难提取您想要的内容,因为它不使用任何 id 或类名来指示任何内容或位置。您是否致力于这个特定的网站,或者您是否可以使用另一个可能有一些句柄以便更好地选择的网站?
-
我没有被困在网站上,我对选择持开放态度,正如我之前所说的,我是新手。
标签: android parsing web html-table jsoup