2

私はJavaの初心者です。Web サイトからデータを取得し、それを何らかのデータ構造に保存することは可能ですか? たとえば、プログラムは特定の時間にヤフー ファイナンスから株の価値を取得し、それを保存します。私が言ったように、私はJavaに精通していないので、これができるかどうか知りたい. できるとしたら、それを行うのは非常に難しいですか?

4

4 に答える 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

はい、ウェブサービスを利用すれば可能です。

  1. Yahoo などは Web サービスを公開します。
  2. あなたのプログラムはそのウェブサービスを消費し、データを取得して最後に操作を行います
于 2013-02-27T04:05:00.263 に答える