【发布时间】:2018-07-04 13:53:23
【问题描述】:
我正在开发一个小项目,我试图从这个链接的表格中解析农作物的最新市场价格:
http://amis.pk/ViewPrices.aspx?searchType=1&commodityId=1
我想得到像 Apple(ammre):12500 这样的输出
我使用的代码是:
public class MainActivity extends AppCompatActivity {
private String url="http://amis.pk/ViewPrices.aspx?searchType=1&commodityId=1";
TextView datatv;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
datatv=(TextView)findViewById(R.id.tv);
btn=(Button)findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@TargetApi(Build.VERSION_CODES.CUPCAKE)
@Override
public void onClick(View view) {
new Description().execute();
}
});
}
@TargetApi(Build.VERSION_CODES.CUPCAKE)
private class Description extends AsyncTask<Void, Void, Void> {
StringBuilder s=new StringBuilder();
String title;
@Override
protected Void doInBackground(Void... params) {
try {
Document mBlogDocument = Jsoup.connect(url).get();
Log.e("Activity Log", "doInBackground"+mBlogDocument.toString());
Elements table = mBlogDocument.getElementsByClass("table.cart");
Elements tdsInSecondRow = mBlogDocument.select("table tr:nth-child(2) > td");
for (Element td : tdsInSecondRow)
{
System.out.println("TD: " + td.text());
}
s.append(table);
s.append(tdsInSecondRow);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
此代码返回给我第二行中表格数据的完整 html,但是我如何才能仅从第 4 列(最高价格)中获取特定于苹果(ammre)的数据?我对此一无所知。任何帮助将不胜感激。
【问题讨论】:
-
如果没有包含足够的页面 HTML 来说明您的代码在做什么,这个问题就离题了。 Stack Overflow 上的问题必须是自包含的。这意味着我们需要能够回答问题,而无需离开现场即可获取特定问题的信息(例如,必须访问网站)。
-
感谢您添加此信息,我会牢记这一点。不过之前的回复帮了大忙。
标签: java parsing web-scraping jsoup