0

私はJavaが初めてで、Webページからデータを解析する方法を知りたいです(Googleでの特定の調査の結果のタイトルとしましょう)。データを取得できるかどうかを確認するためだけに、次の非同期タスクを実装しようとしました。

private class DownloadTask extends AsyncTask<String, Void, Void> {
        protected Void doInBackground(String... urls) {
            HtmlCleaner parser = new HtmlCleaner();
            URL url;
            try{
                url = new URL("https://www.google.com/search?q=java&rct=j&gws_rd=cr&ei=VsWJVcycOMaisAH4wISABA");
                URLConnection conn = url.openConnection();
                DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
                DocumentBuilder builder = factory.newDocumentBuilder();
                Document doc = builder.parse(conn.getInputStream());
                XPathFactory xfactory = XPathFactory.newInstance();
                XPath xpath = xfactory.newXPath();
                XPathExpression expr = xpath.compile("//*[@id=\"rso\"]/div[2]/li[1]/div/h3/a");

                Object result = expr.evaluate(doc, XPathConstants.NODESET);
                NodeList nodes = (NodeList) result;
                for (int i = 0; i < nodes.getLength(); i++) {
                    System.out.println(nodes.item(i).getNodeValue());
                    Log.d(TAG,nodes.item(i).getNodeValue());
                }
            }
            catch (SAXException e) {
                Log.d(TAG, "\necc1");
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                Log.d(TAG, "\necc2");
                e.printStackTrace();
            } catch (IOException e) {
                Log.d(TAG, "\necc3");
                e.printStackTrace();
            } catch (ParserConfigurationException e) {
                Log.d(TAG, "\necc4");
                e.printStackTrace();
            } catch (XPathExpressionException e) {
                Log.d(TAG, "\necc5");
                e.printStackTrace();
            }
        return null;
        }
    }

しかし、私はこのように SAXParseExcpetion を持ち続けます:

org.xml.sax.SAXParseException: Unexpected <! (position:START_DOCUMENT null@1:1 in java.io.InputStreamReader@425a7e80)

次の行を参照してくださいDocument doc = builder.parse(conn.getInputStream());。ドキュメントの作成でエラーが発生する可能性があると思いますが、対処方法がよくわかりません。

4

0 に答える 0