2

get リクエストを作成し、レスポンスを String に保存しresponseます。

HttpClient client = new DefaultHttpClient(); 
String getURL = "some_url_with_param_values";
HttpGet get = new HttpGet(getURL);
HttpResponse responseGet = client.execute(get);  
HttpEntity resEntityGet = responseGet.getEntity();   
String response = EntityUtils.toString(resEntityGet);

しかし、私は<div>クラス名を持つ sにのみ興味があり<div class="product-data">ます。だから、私はこれをしました:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
InputSource is;
builder = factory.newDocumentBuilder();
is = new InputSource(new StringReader(xml));
Document doc = builder.parse(is);
NodeList list = doc.getElementsByTagName("product-data"); //I even tried: (div class="product-data)
String test = list.item(0).getNodeValue(); //Just to test it

残念ながら、うまくいきませんでした。どんな助けでも大歓迎です。


私の応答文字列は基本的に html ページです。

<!DOCTYPE html .....
<html>
<head>
    //some script tags
</head>
<body>
    //some tags
    <div class="product-data">
        //some other tags
    </div>
    //some tags
    <div class="product-data">
        //some other tags
    </div>
    ....
</body>  
</html>                 
4

1 に答える 1

3

使ってみるべきだと思いますgetElementsByClassName('product-data')

それがうまくいかない場合は、いつでもJsoupをチェックできます。これは、WebページからHtml要素を簡単に抽出する方法を提供するライブラリを提供します。

DefaultHttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url.toURI());
HttpResponse resp = client.execute(get);

String content = EntityUtils.toString(resp.getEntity());
Document doc = Jsoup.parse(content);
Elements ele = doc.select("div.classname");

この例では、Http GETを実行してから、クラス「classname」を持つすべてのDiv要素を抽出します。これにより、好きなことを実行できます。

于 2012-10-18T06:58:16.190 に答える