Android如何获取网页动态内容

时间:2018-10-11 01:51:59

标签: java android

我是Android的新手,所以将不胜感激。

我正在尝试从网页中抓取图像并随机显示。
为此,我使用DownloadTask读取html,使用正则表达式查找图像链接,将它们添加到ArrayList,然后从列表中选择一个随机链接进行渲染。

但是,页面使用JQuery加载内容。我正在获取原始DOM的html,但是我需要最终的html。

页面渲染完成后,如何运行此方法。 (我尝试让线程休眠,但这无济于事。我还找到了一些答案(例如this answer),用于检查WebView是否已完成渲染,但我实际上并未渲染页面,只是抓取HTML。)

谢谢!

以下是相关方法:

// Open internet connection on a separate thread and download html from target page.

public class DownloadTask extends AsyncTask<String, Void, String> {


    @Override
    protected String doInBackground(String... urls) {

        String result = "";
        URL url;
        HttpURLConnection urlConnection;

        try {

            url = new URL(urls[0]);
            urlConnection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = urlConnection.getInputStream();
            InputStreamReader reader = new InputStreamReader(inputStream);

            int data = reader.read();

            while (data != -1) {

                char current = (char) data;
                result += current;
                data = reader.read();

            }

            return result;

        }
        catch(Exception e) {

            e.printStackTrace();
            return "Failed to connect to url!";

        }


    }

}

然后实际调用方法:

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

        imageView = findViewById(R.id.imageView);

        DownloadTask getHtml = new DownloadTask();
        String result = null;


        try {
            result = getHtml.execute("example.com").get();

        } catch (InterruptedException e) {

            e.printStackTrace();

        } catch (ExecutionException e) {

            e.printStackTrace();

        }

        findImages(result);

0 个答案:

没有答案