【问题标题】:Scrape the text of a selected Drop Down item with rvest使用 rvest 刮掉所选下拉项目的文本
【发布时间】:2016-05-29 09:58:31
【问题描述】:

我正在使用 Rseleniumrvest 抓取一些网站。因此,我正在循环浏览下拉菜单的项目以更改 javascript 表。 下拉菜单中的表名应该成为我在抓取表中的标识符列。我设法刮掉了桌子,但是只刮了一个选定的菜单条目时我被卡住了。 下面是一些html代码:

<select>
<option value="5823">2010/2011</option>
<option value="7094">2011/2012</option>
<option value="9024">2012/2013</option>
<option value="11976">2013/2014</option>
<option value="15388">2014/2015</option>
<option value="18336" selected="selected">2015/2016</option>
</select>

如何获取所选列的 html_text? css 选择器 :checked 不起作用。 我试过了:

 html_nodes("option") %>% html_attrs()

这给了我正确的答案:

 [[1]]
 value 
"5823" 

[[2]]
 value 
"7094" 

[[3]]
 value 
"9024" 

[[4]]
  value 
"11976" 

[[5]]
  value 
"15388" 

[[6]]
  selected      value 
"selected"    "18336" 

read_html(wData) %>% html_nodes("option") %>% html_text()
[1] "2010/2011" "2011/2012" "2012/2013" "2013/2014" "2014/2015" "2015/2016"

但我不知道如何将两者结合在一起。我只得到:

[1] "2015/2016"

由于我正在循环选择选项,因此我需要一个通用解决方案。 谢谢。

【问题讨论】:

    标签: css r web-scraping rvest


    【解决方案1】:

    您可以使用 xpath 选择器而不是 css 选择器。

    read_html(wData) %>% html_nodes(xpath="//option[@selected]")  %>% html_text()
    

    即使:checked css 伪类不起作用,您也可以搜索属性。

    【讨论】:

    • 很好的解决方案。我找到了另一个......因为我已经在使用 RSelenium 作为 javascript 部分,我可以使用相应包中的remDr$findElement(using = 'css', "option:checked")$getElementText()[[1]]
    猜你喜欢
    • 2020-04-14
    • 2019-11-18
    • 2016-03-08
    • 2015-04-15
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2015-09-10
    相关资源
    最近更新 更多