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);

所以我想我不能使用选择,但即使这样可行。我不知道如何选择标签的那部分并将其放入新字符串中。

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 回答