【发布时间】:2020-11-20 17:21:51
【问题描述】:
我正在做一个网络抓取项目,我是 RSelenium 的新手,需要帮助从下拉列表中选择一个值。我浏览了帖子,发现从下拉列表中进行选择时使用 Xpath 非常方便。我能够编写一些似乎正在激活从下拉菜单中单击的代码,如下所示,但我不知道如何实际强制从特定菜单选项(例如,当前标题)中进行选择。
webElem <- remDr$findElement(using = 'xpath', value = "//*[@data-v-106f7212='']")
webElem$clickElement()
我想指出,当我从下拉菜单中实际进行选择时,第一个 div 括号中的 class="searchCategorySelect" 会更改为 class="searchCategorySelect catSelected"。此括号中的标题值也会随着 <span class="searchCategorySelectLabel"...> 括号中的值而变化。我用下面的例子说明了这些变化。
我使用来自this 帖子的这个答案作为我代码的灵感。此示例中的网页抓取代码通过使用 Xpath 并选择包含所选季节的 data-option-name 来选择季节。我页面中的 HTML 不是以这种方式构建的,鉴于我的 HTML 结构,我一直在思考如何使用 RSelenium 有效地进行选择。
任何建议或帮助都会非常有用和感激。
默认值:
<div class="searchCategorySelect" data-v-106f7212="" data-v-c62fe6f4="" title="All Resources">
<select class="srselect srselectTopbar" data-v-106f7212="" aria-label="Select Search Category">
<option class="" data-v-106f7212="" value="CurrentSrTitle">Current Title</option>
<option class="" data-v-106f7212="" value="All">All Resources</option>
<option class="" data-v-106f7212="" value="Images">Images</option>
<option class="" data-v-106f7212="" value="Dictionary">Dictionary</option>
<option class="" data-v-106f7212="" value="Media">Media</option>
<option class="" data-v-106f7212="" value="Alerts">Alerts</option>
<option class="" data-v-106f7212="" value="News">News</option>
<option class="" data-v-106f7212="" value="EBMcalc">EBMcalc</option>
<option class="" data-v-106f7212="" value="Help">Help</option>
</select>
<div class="searchCategorySelectVisual" data-v-106f7212="" role="presentation">
<span class="searchCategorySelectLabel" data-v-106f7212="">All Resources</span>
<span class="triangleGlyph" data-v-106f7212="">
<svg class="vsvg" data-v-887bca16="" data-v-106f7212="" focusable="false" aria-label="" role="presentation" aria-hidden="true">
<use data-v-887bca16="" xlink:href="#white_triangle2" role="presentation"></use>
<!---->
<!---->
</svg>
</span>
</div>
</div>
做出选择时:
<div class="searchCategorySelect catSelected" data-v-106f7212="" data-v-c62fe6f4="" title="Current Title">
<select class="srselect srselectTopbar" data-v-106f7212="" aria-label="Select Search Category">
<option class="" data-v-106f7212="" value="CurrentSrTitle">Current Title</option>
<option class="" data-v-106f7212="" value="All">All Resources</option>
<option class="" data-v-106f7212="" value="Images">Images</option>
<option class="" data-v-106f7212="" value="Dictionary">Dictionary</option>
<option class="" data-v-106f7212="" value="Media">Media</option>
<option class="" data-v-106f7212="" value="Alerts">Alerts</option>
<option class="" data-v-106f7212="" value="News">News</option>
<option class="" data-v-106f7212="" value="EBMcalc">EBMcalc</option>
<option class="" data-v-106f7212="" value="Help">Help</option>
</select>
<div class="searchCategorySelectVisual" data-v-106f7212="" role="presentation">
<span class="searchCategorySelectLabel" data-v-106f7212="">Current Title</span>
<span class="triangleGlyph" data-v-106f7212="">
<svg class="vsvg" data-v-887bca16="" data-v-106f7212="" focusable="false" aria-label="" role="presentation" aria-hidden="true">
<use data-v-887bca16="" xlink:href="#white_triangle2" role="presentation"></use>
<!---->
<!---->
</svg>
</span>
</div>
</div>
【问题讨论】:
标签: r xpath web-scraping drop-down-menu rselenium