r – 如何将xpath传递给html_nodes()?

我想使用html_nodes从谷歌搜索结果中搜集组织的名称(我只需要第一个元素,假设这将是最好的猜测).

现在,我试图使用其xpath来定位第一个结果,并将其传递给函数html_nodes.

要查找xpath,我使用的是谷歌浏览器,如下图所示

《r – 如何将xpath传递给html_nodes()?》

这给了我* * [@ id =“rso”] / div [1] / div / div [1] / div / div / h3 / a作为第一个结果标题的xpath.但是,当我尝试将其传递给html_nodes()时,我得到一个空字符串:

page %>% html_nodes(xpath='//*[@id="rso"]/div[1]/div/div[1]/div/div/h3/a')
{xml_nodeset (0)}

虽然我期待字符串The A-Test 2017 Workshop.

如何使用xpath或css获取该标记的内容?

最佳答案 在抓取网站时,
selectorgadget是一个很棒的工具.使用这个我可以确定使用谷歌搜索结果,可以使用以下css-tag找到所有标题:.r.

为了刮取结果,你可以使用这样的东西:

library(rvest)

# searching for `rstudio`
page <- read_html("https://www.google.at/search?client=safari&rls=en&q=rstudio&ie=UTF-8&oe=UTF-8&gfe_rd=cr&ei=VpJsWe2oOqqk8wfT5KaQDQ")

page %>% 
  html_nodes(".r") %>%
  html_text()
#>  [1] "RStudio – Open source and enterprise-ready professional software ..."
#>  [2] "Download"                                                            
#>  [3] "Download RStudio Server"                                             
#>  [4] "RStudio Server"                                                      
#>  [5] "Shiny"                                                               
#>  [6] "RStudio – Wikipedia"                                                 
#>  [7] "RStudio - Wikipedia"                                                 
#>  [8] "Datenrettung | R-Studio 8.3 Deutsch | Software zur Datenrettung ..." 
#>  [9] "GitHub - rstudio/rstudio: RStudio is an integrated development ..."  
#> [10] "RStudio · GitHub"                                                    
#> [11] "R-Studio"                                                            
#> [12] "Install RStudio with R Server on HDInsight - Azure | Microsoft Docs"

您可以通过子集轻松找到第一个:

page %>% 
  html_nodes(".r") %>%
  html_text() %>% 
  .[1]
#> [1] "RStudio – Open source and enterprise-ready professional software ..."

这个博客更彻底地演示了这种方法:https://blog.rstudio.com/2014/11/24/rvest-easy-web-scraping-with-r/

点赞