Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法通过Android/Java提取HTML数据_Java_Android_Jquery_Web Scraping_Jsoup - Fatal编程技术网

无法通过Android/Java提取HTML数据

无法通过Android/Java提取HTML数据,java,android,jquery,web-scraping,jsoup,Java,Android,Jquery,Web Scraping,Jsoup,我试图使用Android/Java/JSoup从网站上刮取一些数据,但是我无法使用下面显示的url中的表数据更新我的textview 我相信我在实现JSOUP以解析表数据方面已经做了几乎所有正确的事情,但是由于某种奇怪的原因,当我执行以下操作时,我仍然无法查看我试图获取的数据: 资料来源: package com.example.test; import java.io.BufferedReader; import java.io.InputStream; import java.io.Inp

我试图使用Android/Java/JSoup从网站上刮取一些数据,但是我无法使用下面显示的url中的表数据更新我的textview

我相信我在实现JSOUP以解析表数据方面已经做了几乎所有正确的事情,但是由于某种奇怪的原因,当我执行以下操作时,我仍然无法查看我试图获取的数据:

资料来源:

package com.example.test;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {

    TextView tv;
    final String URL = "http://sheriff.org/apps/arrest/results.cfm?lname=&fname=";lname=&fname=";
String tr;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv = (TextView) findViewById(R.id.TextView01);
        new MyTask().execute(URL);
    }

    private class MyTask extends AsyncTask<String, Void, String> {
        ProgressDialog prog;
        String title = "";

        @Override
        protected void onPreExecute() {
            prog = new ProgressDialog(MainActivity.this);
            prog.setMessage("Loading....");
            prog.show();
        }

        @Override
        protected String doInBackground(String... params) {
            try {
                Document doc = Jsoup.connect(params[0]).get();
                Elements tableElement = doc.select(".datagrid");
                Element th = doc.select("tr").first();
                Element firstTh = th.select("th").first();
                title = firstTh.text();
        }   catch (IOException e) {
                e.printStackTrace();
            }
            return title;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            prog.dismiss();
            tv.setText(result);
        }
    }
}
package com.example.test;
导入java.io.BufferedReader;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.io.IOException;
导入org.jsoup.jsoup;
导入org.jsoup.nodes.Document;
导入org.jsoup.nodes.Element;
导入org.jsoup.select.Elements;
导入org.apache.http.HttpResponse;
导入org.apache.http.client.methods.HttpGet;
导入org.apache.http.impl.client.DefaultHttpClient;
导入android.app.Activity;
导入android.app.ProgressDialog;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.TextView;
公共类MainActivity扩展了活动{
文本视图电视;
最终字符串URL=”http://sheriff.org/apps/arrest/results.cfm?lname=&fname=“lname=&fname=”;
字符串tr;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView)findViewById(R.id.TextView01);
新建MyTask().execute(URL);
}
私有类MyTask扩展了AsyncTask{
进程对话程序;
字符串标题=”;
@凌驾
受保护的void onPreExecute(){
prog=新建进度对话框(MainActivity.this);
程序设置消息(“加载…”);
prog.show();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
试一试{
Document doc=Jsoup.connect(参数[0]).get();
Elements tableElement=doc.select(“.datagrid”);
元素th=doc.select(“tr”).first();
元素firstTh=th.选择(“th”).first();
title=firstTh.text();
}捕获(IOE异常){
e、 printStackTrace();
}
返回标题;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
程序解除();
tv.setText(结果);
}
}
}

这可能是您的问题:

final String URL = "http://http://sheriff.org/apps/arrest/results.cfm?lname=&fname=";
尝试:


我想我可以为您进行解析。至少它在Java中可以工作。只需将System.out.println部分更改为其他部分,即可在UI上显示数据。您可以使用cells.get(I)获取表中单元格的内容

    try {
        doc = Jsoup.connect(params[0]).get();
        Element tableElement = doc.select(".datagrid").first();

        Elements tableRows = tableElement.select("tr");
        for (Element row : tableRows) {
            Elements cells = row.select("td");
            if (cells.size() >0) {
                System.out.println(cells.get(0).text()+"; "+cells.get(1).text()+"; "+cells.get(2).text()+"; "+cells.get(3).text());
            }
        }


    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

这是因为您的url错误:

final String URL = "http://sheriff.org/apps/arrest/results.cfm?lname=&fname=";lname=&fname=";
应该改成

String url = "http://sheriff.org/apps/arrest/results.cfm?lname=FOO&fname=BAR";
以下是您必须搜索的参数名称和姓氏:

lname=FOO&fname=BAR;
如果您更改此选项,它将起作用,如果您想尝试此选项进行测试:

http://sheriff.org/apps/arrest/results.cfm?lname=&fname=bob

你的URL字符串真的应该以“h”开头吗_ttp://h_tp://“?我添加了那些下划线,这样它就不会变成链接。我修复了…它仍然不工作在页面中看不到任何类
datagrid
,而且url似乎是错误的”“;lname=&fname=“;然后我将设置一些断点,并使用调试器确定
title
变量是否正在获取数据。若并没有,那个么刮削是有问题的。跨过那个一步,而不是进入它。还有其他建议吗?
http://sheriff.org/apps/arrest/results.cfm?lname=&fname=bob