gpt4 book ai didi

Rselenium - 如何抓取所有下拉列表选项值

转载 作者:行者123 更新时间:2023-12-02 20:56:51 24 4
gpt4 key购买 nike

如何使用 Rselenium 抓取下拉列表中的所有选项值?

页面源代码示例:

<select name="main$ddArea" onchange="javascript:setTimeout(&#39;__doPostBack(\&#39;main$ddArea\&#39;,\&#39;\&#39;)&#39;, 0)" id="main_ddArea" class="groupTextBox">
<option selected="selected" value="95182">Area 1</option>
<option value="95183">Area 2</option>
<option value="95184">Area 3</option>
<option value="95185">Area 4</option>
<option value="95186">Area 4</option>
</select>

想要的结果是一个向量,每个值都是一个元素。例如,values = c("95182", "95183", "95184", "95185", "95186")

获取值的字符串也可能有效,因为它可以拆分为元素,例如,使用 strsplit。

带有“值”或“选项”的 getElementAttribute() 不起作用。例如,

dd.areas = remDr$findElement(using='id', value="main_ddArea")
dd.areas$getElementAttribute('option')

dd.areas$getElementAttribute('value')

getElementText() 找到文本的一个字符串,例如,“Area 1/n Area 2/n Area 3/n....”。但是文本以后不能用于导航下拉列表。换句话说,当使用 $findelement() 导航下拉列表时,需要一个值来填充下拉列表;文本不起作用。

package documentation似乎不包含对下拉列表的引用,vignette 也不包含.

最佳答案

您可以使用 findElement 定位 select 标签,然后获取 outerHTML 并解析生成的 html:

remDr$navigate("https://www.tutorialspoint.com/html/html_select_tag.htm")
webElem <- remDr$findElement("name", "dropdown")
appHTML <- webElem$getElementAttribute("outerHTML")[[1]]
doc <- htmlParse(appHTML)
doc["//option", fun = function(x) xmlGetAttr(x, "value")]

> doc["//option", fun = function(x) xmlGetAttr(x, "value")]
[[1]]
[1] "Data Structures"

[[2]]
[1] "Data Mining"

Firefox 和获取元素属性最近出现了一些问题,这些问题在使用基于 gecko 的浏览器运行 selenium server 2 时出现,请参阅 GetAttribute of WebElement in Selenium Firefox Driver Returns Empty .在这种情况下,您可以使用 JavaScript 获取属性

remDr$navigate("https://www.tutorialspoint.com/html/html_select_tag.htm")
webElem <- remDr$findElement("name", "dropdown")
jsScript <- "var element = arguments[0]; return element.outerHTML;"
appHTML <- remDr$executeScript(jsScript, list(webElem))[[1]]
doc <- htmlParse(appHTML)
doc["//option", fun = function(x) xmlGetAttr(x, "value")]

> doc["//option", fun = function(x) xmlGetAttr(x, "value")]
[[1]]
[1] "Data Structures"

[[2]]
[1] "Data Mining"

关于Rselenium - 如何抓取所有下拉列表选项值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39949809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com