3

したがって、次のhtmlソースがあります。

<form action='http://example.com' method='get'>

        <P>Some example text here.</P>
        <input type='text' class='is-input' id='agent_name' name='deviceName' placeholder='Device Name'>
        <input type='hidden' name='p' value='firefox'>
        <input type='hidden' name='email' value='example@example.com'>
        <input type='hidden' name='k' value='cITBk236gyd56oiY0fhk6lpuo9nt61Va'>
        <p><input type='submit' class='btn-blue' style='margin-top:15px;' value='Install'></p>
</form>

残念ながら、この html ソースは文字列として保存されます。jsoupのようなものを使って解析したいと思います。次の文字列を取得します。 <input type='hidden' name='k' value='cITBk236gyd56oiY0fhk6lpuo9nt61Va'>

またはさらに良いことに、次の値のみを取得します。cITBk236gyd56oiY0fhk6lpuo9nt61Va

私が直面している問題は次のとおりです。

a) その値:cITBk236gyd56oiY0fhk6lpuo9nt61Va一貫して変化している html タグ全体を探すことができません。

だから、私はこれを行うためのより良い方法を探しています。これが私が現在持っているもので、機能していないようです:

//tried use thing, but java was angry for some reason
Jsoup.parse(myString);

// so I used this instead. 
org.jsoup.nodes.Document doc = Jsoup.parse(myString);

// in this case I just tried to select the entire tag. Elements
elements = doc.select("<input name=\"k\"
value=\"cITBkdxJTFd56oiY0fhk6lUu8Owt61Va\" type=\"hidden\">");

//yeah this does not seem to work. I assume it's not a string anymorebut a document. Not sure if it 
//would attempt to print anyway.
System.out.println(elements);

だから私はselectを使うことができないと思いますが、これがうまくいくとしても。タグのその部分を選択して新しい文字列に配置する方法がわかりませんでした。

4

2 に答える 2

6

この方法で試すことができます

Document doc = Jsoup.parse(myString);
Elements elements = doc.select("input[name=k]");
System.out.println(elements.attr("value"));

出力:

cITBk236gyd56oiY0fhk6lpuo9nt61Va
于 2013-05-21T17:55:50.600 に答える
0

select要素を取得するには、次の呼び出しを試してください。

elements = doc.select("input[name=k][value=cITBkdxJTFd56oiY0fhk6lUu8Owt61Va]")

このコンテキストでは、オブジェクトでelementsなければなりません。Elementsからデータを抽出する必要がある場合はelements、次のいずれかを使用できます (とりわけ):

elements.html(); // HTML of all elements
elements.text(); // Text contents of all elements
elements.get(i).html(); // HTML of the i-th element
elements.get(i).text(); // Text contents of the i-th element
elements.get(i).attr("value"); // The contents of the "value" attribute of the i-th element

を反復するelementsには、次のいずれかを使用できます。

for(Element element : elements)
    element.html(); // Or whatever you want

for(int i=0;i<elements.size();i++)
    elements.get(i).html(); // Or whatever you want

Jsoup優れたライブラリです。このメソッドは、ドキュメント クエリ用にselect(軽く) 変更されたCSS セレクターを使用します。メソッドの有効な構文は Jsoup javadocsで確認できます。

于 2013-05-21T17:48:34.847 に答える