我正在尝试从50多个动态网页中抓取实时数据,并且需要每1-2秒更新一次数据。为此,我每1/2秒安排了一个计时器,该计时器通过以下方法进行50次迭代(对于50个URL):
public double fetchData(String link) {
String data = null;
try {
URL url = new URL();
urlConn = url.openConnection(link);
InputStreamReader inStream = new InputStreamReader(urlConn.getInputStream());
BufferedReader buff = new BufferedReader(inStream);
/*code that scrapes webpage, stores value in "data"*/
inStream.close();
buff.close();
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
此方法有效,但每个网址大约需要一秒钟,或总计50秒。我还尝试了JSoup,希望可以使用以下代码克服延迟:
public double fetchData(String link, String identifier) {
Document doc;
String data = null;
try {
doc = Jsoup.connect(link).timeout(10*1000).get();
data = doc.getElementById(identifier).parent().child(0).text();
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
但是已经遇到了几乎相同的处理时间。是否有通过URLConnection,JSoup或其他方法同时从动态网页中绘制数据的更快方法?