私はJavaの初心者です。Web サイトからデータを取得し、それを何らかのデータ構造に保存することは可能ですか? たとえば、プログラムは特定の時間にヤフー ファイナンスから株の価値を取得し、それを保存します。私が言ったように、私はJavaに精通していないので、これができるかどうか知りたい. できるとしたら、それを行うのは非常に難しいですか?
質問する
234 次
4 に答える
3
public class GetYahooData
{
public ArrayList<JSONObject> getOutputFromUrl(String url)
{
ArrayList<JSONObject> output = new ArrayList<JSONObject>();
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse response;
StringBuilder builder= new StringBuilder();
JSONObject myjson ;
JSONArray the_json_array;
try
{
response = httpClient.execute(httpPost);
BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
char[] buf = new char[8000];
int l = 0;
while (l >= 0)
{
builder.append(buf, 0, l);
l = in.read(buf);
}
myjson = new JSONObject("{child:"+builder.toString()+"}");
JSONObject mmm = new JSONObject(builder.toString());
JSONArray mmmArr = mmm.getJSONArray("status");
the_json_array = myjson.getJSONArray("child");
for (int i = 0; i < the_json_array.length(); i++)
{
JSONObject another_json_object = the_json_array.getJSONObject(i);//the_json_array.getJSONObject(i);
output.add(another_json_object);
}
} catch (ClientProtocolException e) {
System.out.println("ClientProtocolException :"+e);
e.printStackTrace();
} catch (IOException e) {
System.out.println("IOException :"+e);
e.printStackTrace();
} catch (JSONException e) {
System.out.println("JSONException hussain :"+e);
e.printStackTrace();
}
return output;
}
}
public class useYahoo
{
public static void main(String args[])
{
String url = "the url you want the response from";
getYahooData object = new GetYahooData();
ArrayList<JSONObject> output = object.getOutputFromUrl(url);
}
}
于 2013-02-27T04:48:34.260 に答える
1
私はJSoupを広範囲に使用してきました。レイアウトや構造が頻繁に変更されない Web サイトからデータを抽出するプログラムをカスタマイズするだけJSoup
で十分で便利です。
プログラミングの基本を知っていて (必ずしも に精通している必要はありませんJava
)、Web を構成するもの (たとえば、 、など) を理解しているhtml
と仮定するとdom
、Web スクレイピングの方法をすぐに習得できると思いますJSoup
。
于 2013-02-27T04:39:40.990 に答える
0
はい、任意の Web ページを Java 文字列にダウンロードしてコンテンツを解析できますが、そのようなソリューションは信頼できません。作成者が Web サイトの構造を変更すると、コードはすぐに壊れてしまいます。
このような統合を行う一般的な方法は、RESTful Web サービスによるものです。データ プロバイダーには、呼び出すことができる一連の URL とパラメーターがあり、株価データを (xml または JSON 形式で) 返します。
于 2013-02-27T04:03:46.157 に答える
0
はい、ウェブサービスを利用すれば可能です。
- Yahoo などは Web サービスを公開します。
- あなたのプログラムはそのウェブサービスを消費し、データを取得して最後に操作を行います
于 2013-02-27T04:05:00.263 に答える