【问题标题】:Web scraping Steam Review with R使用 R 进行网页抓取 Steam 评论
【发布时间】:2020-03-05 12:30:10
【问题描述】:

我无法做我想做的事:从 Steam 评论中获取所有数据。我目前正在进行视频游戏的前期制作,我想对用户对游戏玩法的评论进行一些文本挖掘。

我正在使用 Rvest 这样做。

2 个问题: -我无法设法将评论与发布日期分开。我想把它们放在单独的列中。我怎么能那样做? - 它运作良好,但是......我的 data.frame 中只有 10 条评论,我如何获得所有评论? (我花了几个小时试图了解我是如何做到这一点的,但这似乎是不可能的,因为如果我理解正确的话,每次我们进入网站底部时,steam 都会使用 javascript 注入,而 rvest 不会这样做读取链接。

这是我的代码:

#install.packages("rvest")
library(rvest)

link <- "https://steamcommunity.com/app/215080/reviews/"

review <- read_html(link) %>%
  html_nodes("div.apphub_CardTextContent") %>%
  html_text()

opinion <- read_html(link) %>%
  html_nodes("div.title") %>%
  html_text()

hoursplayed <- read_html(link) %>%
  html_nodes("div.hours") %>%
  html_text()

helpful <- read_html(link) %>%
  html_nodes("div.found_helpful") %>%
  html_text()

date <- read_html(link) %>%
  html_nodes("div.date_posted") %>%
  html_text()

tab <- data.frame("Posted" = date, "Review" = review, "Opinion" = opinion, "Hours Played" = hoursplayed, "Number of helpful vote" = helpful)

提前感谢您的帮助。

【问题讨论】:

  • 您发布的 url 上只有 10 条评论吗?如果您发送要抓取的日期的 html,可能会有所帮助。我用 python 和 BeautifulSoup 做过这个,从来没有用 R。
  • 看起来 Steam 允许 API 访问评论:partner.steamgames.com/doc/store/getreviews 使用它可能比抓取要容易得多,尤其是在发生奇怪的 JavaScript 内容时。
  • 我不明白如何在 R 中使用 Steam API。你能详细说明它是如何工作的,或者给我一个教程吗?
  • 尝试阅读 API 文档,然后在卡住时发布。您可能会发现它有使用 R 的示例。您还可能会发现没有满足您需求/资源的服务。
  • httr getting started vignette 是一个很好的起点。 This tutorial 看起来也不错

标签: r web-scraping steam review


【解决方案1】:

您可以在 stringr R 包中使用正则表达式:

library(stringr)
library(rvest)

link <- "https://steamcommunity.com/app/215080/reviews/"

review <- read_html(link) %>%
  html_nodes("div.apphub_CardTextContent") %>%
  html_text()

opinion <- read_html(link) %>%
  html_nodes("div.title") %>%
  html_text()

hoursplayed <- read_html(link) %>%
  html_nodes("div.hours") %>%
  html_text()

helpful <- read_html(link) %>%
  html_nodes("div.found_helpful") %>%
  html_text()

date <- read_html(link) %>%
  html_nodes("div.date_posted") %>%
  html_text()

tab <- data.frame("Posted" = date, "Review" = review, "Opinion" = opinion, "Hours Played" = hoursplayed, "Number of helpful vote" = helpful)

date <- str_extract_all(tab$Review, pattern = "Posted.[:space:]\\d{1}[:space:]December")
tab$Review <- str_remove_all(tab$Review, pattern = "Posted.[:space:]\\d{1}[:space:]December")
tab[["date"]] <- date

【讨论】:

    猜你喜欢
    • 2021-03-17
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 2018-02-15
    相关资源
    最近更新 更多