从Google页面检索信息

时间:2014-09-07 21:47:56

标签: android database cloud extract information-retrieval

我正在考虑制作我的第一个Android应用程序,它是关于电影的,我发现了一个很好的数据源,它是" http://www.google.com/movies?"但我想知道如何提取这些信息并将其放入我的应用程序中

我已经搜索过,但我不知道哪种方法最适合这样做?谷歌有这个API吗?那是我想要的吗?使用源代码是否更好?我可以阅读或看到学习如何做到这一点?

非常感谢,我是第一次编程从云中检索信息,

欢呼声

3 个答案:

答案 0 :(得分:0)

让您的生活更轻松,选择适合您的api。选择以下其中一个:

http://www.programmableweb.com/news/52-movies-apis-rovi-rotten-tomatoes-and-internet-video-archive/2013/01/22

不仅要根据内容做出决定,还要根据易用性和文档做出决定。文档很重要。

祝你好运!

答案 1 :(得分:0)

我宁愿建议您使用TheMovieDB.com API这很简单,并提供电影的所有信息。

答案 2 :(得分:0)

烨。这是一种方法。

首先,您需要找到SQL的来源。 Yahoo Developer Console是寻找这类东西的好地方。它有一切。这些资源的工作方式是你有一个很长的链接,像这样.... developer.yahoo.com/blah/this。 。 。 & q = KEYWORD_HERE + blah /。 。

要访问您正在寻找的信息,您可以坚持正确的关键字在哪里" KEYWORD_HERE"是的,链接将以SQL格式提供信息。我将做一个股票应用程序的例子。

首先创建一个Activity并将链接的两侧定义为字符串。它看起来有点像这样:

public class InfoActivity extends Activity {
       String firstHalf = "http://query.yahooapis.com/v1/public/blahblahblah&q=";
       String secondHalf = "+blah/blah&blah . . . ";

然后,在你的onCreate中,你需要启动一个aSync任务来进行实际的拉取和解析:

protected void onCreate(Bundle bundle) {
       super.onCreate(bundle);
       setContentView(R.id.layout_name);
       final String yqlURL = firstHalf + KEYWORD_HERE + secondHalf; 
       new MyAsyncTask().execute(yqlURL);
}

然后定义我们的MrAsyncTask:

private class MyAsyncTask extends AsyncTask<String, String, String>{
        protected String doInBackground(String... args) {
            try {
                  URL url = new URL(args[0]);
                  URLConnection connection;
                  connection = url.openConnection();

                  HttpURLConnection httpConnection = (HttpURLConnection)connection;

                  int responseCode = httpConnection.getResponseCode();


                  // Tests if responseCode == 200 Good Connection
                 if (responseCode == HttpURLConnection.HTTP_OK) {

                    InputStream in = httpConnection.getInputStream();
                    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

                    DocumentBuilder db = dbf.newDocumentBuilder();
                    Document dom = db.parse(in);

                    Element docEle = dom.getDocumentElement();

                    NodeList nl = docEle.getElementsByTagName("nodeName1");

                    if (nl != null && nl.getLength() > 0) {


                      for (int i = 0 ; i < nl.getLength(); i++) {

                        //Parse the node here with getTextValue(n1, "Name of element")
                        //ex: String movieName = getTextValue(n1, "MovieName");

                      }
                    }
                  }
                } catch (MalformedURLException e) {
                  Log.d(TAG, "MalformedURLException", e);
                } catch (IOException e) {
                  Log.d(TAG, "IOException", e);
                } catch (ParserConfigurationException e) {
                  Log.d(TAG, "Parser Configuration Exception", e);
                } catch (SAXException e) {
                  Log.d(TAG, "SAX Exception", e);
                }
                finally {
                }

            return null;
        }

我希望能让你知道如何做这类事情。我会去看看我是否可以在雅虎apis上快速发现一个好资源,以便在某个位置获得电影时间。

祝你好运:)如果你需要澄清任何事情,请告诉我。

编辑: 看起来这完全是你需要的(资源明智的): https://developer.yahoo.com/yql/console/?q=show%20tables&env=store://datatables.org/alltableswithkeys#h=select+ * + +从+ google.igoogle.movi​​es其中+电影%3D&#39; 68105&#39;%3B

检查出来。使用它,你的两半链接将是:

String firstHalf = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20google.igoogle.movies%20where%20movies%3D'"

String secondHalf = "'%3B&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys"

然后要获得最后的链接,你就可以了

String yqlURL = firstHalf + "ZIP CODE OF YOUR LOCATION" + secondHalf;

你会把你附近的所有电影都归还给你了!