【问题标题】:Scaping text from webpage using 'rvest' and SelectorGadget使用 'rvest' 和 SelectorGadget 对网页中的文本进行缩放
【发布时间】:2021-05-31 18:11:18
【问题描述】:

我正在尝试从网页中获取文本。为了简化我的问题,让我以@RonakShah 的 Stackoverflow 帐户为例来提取信誉值。 'SelectorGadget' 显示“div,div”,我使用了以下代码:

library(rvest)
so <- read_html('https://stackoverflow.com/users/3962914/ronak-shah') %>%
  html_nodes("div") %>% html_nodes("div") %>% html_text()

这给出了一个对象so,其中包含多达 307 个项目。

然后,我把对象变成了一个数据框:

so <- as.data.frame(so)
view(so)

然后,手动遍历数据框中的所有项目,直到找到正确的值so$so[69]。我的问题是如何快速找到具体的目标值。在我的实际情况中,手动操作会稍微复杂一些,因为有多个具有相同值的项目,我需要确定正确的顺序。谢谢。

【问题讨论】:

    标签: r rvest


    【解决方案1】:

    您需要找到一个特定的标签,并将其与您的目标更接近的相应类。您可以使用选择器小工具找到它。

    library(rvest)
    
    read_html('https://stackoverflow.com/users/3962914/ronak-shah') %>%
      html_nodes("div.grid--cell.fs-title") %>%
      html_text() 
    
    #[1] "254,328"
    

    就抓取 StackOverflow 而言,它有一个 API 可以获取有关用户/问题/答案的信息。在 R 中,有一个名为 stackr 的包装包(不在 CRAN 上),这使它非常容易。

    library(stackr)
    data <- stack_users(3962914)
    data$reputation
    [1] 254328
    

    data 还有很多关于用户的其他信息。

    3962914 是您感兴趣的用户的用户 ID,可以从他们的个人资料链接中找到。 (https://stackoverflow.com/users/3962914/ronak-shah)。

    【讨论】:

    • SO 只是一个示例网站。
    • 它现在非常适合我的工作。我仍然熟悉 Selector Gadget 来选择我想要的东西。这是一个有用的工具。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    相关资源
    最近更新 更多