我是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);