【问题标题】:I'm trying to scrape multiple pages我正在尝试抓取多个页面
【发布时间】:2019-10-10 09:15:15
【问题描述】:

我正在尝试从游戏网站的同一网站上抓取多个页面以进行评论。

我尝试运行它并更改我在此处找到的代码:R web scraping across multiple pages 以及答案之一。

library(tidyverse)
library(rvest)

url_base <- "https://www.metacritic.com/browse/games/score/metascore/all/ps4?sort=desc&page=0"

map_df(1:17, function(i) {


  cat(".")

 pg <- read_html(sprintf(url_base, i))

data.frame(Name = html_text(html_nodes(pg,"#main .product_title a")),
         MetaRating = as.numeric(html_text(html_nodes(pg,"#main .positive"))),
         UserRating = as.numeric(html_text(html_nodes(pg,"#main .textscore"))),
         stringsAsFactors = FALSE)

}) -> ps4games_metacritic

结果是第一页被抓取了 17 次,而不是网站上的 17 个页面

【问题讨论】:

  • 如果您查看链接的答案,您会看到页码已替换为 %d。因此,在您的情况下,您会刮掉页码 0、17 次。请改用url_base &lt;- "https://www.metacritic.com/browse/games/score/metascore/all/ps4?sort=desc&amp;page=%d"

标签: r rvest


【解决方案1】:

我对您的代码进行了三处更改:

  1. 因为他们的页码从 0 开始,map_df(1:17... 应该是map_df(0:16...
  2. 由 BigDataScientist 提出, url_base 应该这样设置:url_base &lt;- "https://www.metacritic.com/browse/games/score/metascore/all/ps4?sort=desc&amp;page=%d"
  3. 如果你使用"#main .positive"你会得到一个错误,而 抓取第 7 页,因为没有正分数的游戏开始 那里 - 除非你只想积极的游戏 您应该使用的评估(这意味着一些不同的代码) 改为"#main .game"
    library(tidyverse)
    library(rvest)
    
    url_base <- "https://www.metacritic.com/browse/games/score/metascore/all/ps4?sort=desc&page=%d"
    
    map_df(0:16, function(i) {
      
      
      cat(".")
      pg <- read_html(sprintf(url_base, i))
    
      data.frame(Name = html_text(html_nodes(pg,"#main .product_title a")),
                 MetaRating = as.numeric(html_text(html_nodes(pg,"#main .game"))),
                 UserRating = as.numeric(html_text(html_nodes(pg,"#main .textscore"))),
                 stringsAsFactors = FALSE)
      
    }) -> ps4games_metacritic

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    相关资源
    最近更新 更多