使用 HtmlUnit 抓取整行
Scraping entire lines with HtmlUnit
我正在努力从网页中抓取整个选项行
<select id="Code_9" name="value[2].valueType" onchange="changeMe(this);">
<option value="0">Identifier_1</option>
<option value="1">Identifier_2</option>
<option value="2">Identifier_3</option>
<option value="3" selected="">Identifier_4</option>
</select>
当运行这段代码:
List <HtmlDivision> selectedValue = htmlPage.getByXPath("//*[@id='Code_9']/option");
for (int i = 0; i < selectedValue.size(); i++)
{
System.out.println(selectedValue.get(i));
}
它returns这个:
HtmlOption[<option value="0">]
HtmlOption[<option value="1">]
HtmlOption[<option value="2">]
HtmlOption[<option value="3" selected="">]
但我还需要“标识符”。或者我可以获得“select”中所有内容的直接副本并进行一些字符串解析。
注意抓取这个的处理时间应该越短越好。
编辑 (07.01.22):HTMLDivision 应该改为 HTMLElement。这样@RBRi 的答案是正确的,使用 selectedValue.get(i).asXml() 将输出:
<option value="0">
Identifier_1
</option>
<option value="1">
Identifier_2
</option>
<option value="2">
Identifier_3
</option>
<option value="3" selected="">
Identifier_4
</option>
您可以使用
selectedValue.get(i).asXml()
如果你喜欢把它作为字符串。
否则使用 getChildNodes() 或 getChildren()。
我正在努力从网页中抓取整个选项行
<select id="Code_9" name="value[2].valueType" onchange="changeMe(this);">
<option value="0">Identifier_1</option>
<option value="1">Identifier_2</option>
<option value="2">Identifier_3</option>
<option value="3" selected="">Identifier_4</option>
</select>
当运行这段代码:
List <HtmlDivision> selectedValue = htmlPage.getByXPath("//*[@id='Code_9']/option");
for (int i = 0; i < selectedValue.size(); i++)
{
System.out.println(selectedValue.get(i));
}
它returns这个:
HtmlOption[<option value="0">]
HtmlOption[<option value="1">]
HtmlOption[<option value="2">]
HtmlOption[<option value="3" selected="">]
但我还需要“标识符”。或者我可以获得“select”中所有内容的直接副本并进行一些字符串解析。
注意抓取这个的处理时间应该越短越好。
编辑 (07.01.22):HTMLDivision 应该改为 HTMLElement。这样@RBRi 的答案是正确的,使用 selectedValue.get(i).asXml() 将输出:
<option value="0">
Identifier_1
</option>
<option value="1">
Identifier_2
</option>
<option value="2">
Identifier_3
</option>
<option value="3" selected="">
Identifier_4
</option>
您可以使用
selectedValue.get(i).asXml()
如果你喜欢把它作为字符串。
否则使用 getChildNodes() 或 getChildren()。