【问题标题】:Scraping JSON from a password protected forum in R从 R 中受密码保护的论坛中抓取 JSON
【发布时间】:2021-05-27 03:25:41
【问题描述】:

我在从需要登录才能访问的论坛上的 JSON 文件中读取数据时遇到问题。

我正在使用 rvest 包并在登录后读取 html 页面,此代码运行良好。但我的疑问是我如何使用已注册用户的同一会话读取 JSON 文件。

library(rvest)
library(httr)

  url       <- "https://forum.com/"
  pgsession <- html_session(url)
  pgform    <- html_form(pgsession)[[1]] 
  
  filled_form <- set_values(pgform,
                            "username" = "username", 
                            "password" = "password")
  
  submit_form(pgsession,filled_form)
  

  events <- jump_to(pgsession, "https://forum.com/events.php") 
  page <- html(events)
  data_usernames <- html_text(page, trim = FALSE) 
  

有什么方法可以使用会话读取 Json 吗?我怎样才能使下面的代码工作

  urlJson <- "https://forum.com/events.json"
  
  data = jsonlite::fromJSON(urlJson, simplifyDataFrame = TRUE) 
  df <- as.data.frame(data$data)

【问题讨论】:

  • 每个网站都不同。除非您使用诸如 RSelenium 之类的东西来控制 Web 浏览器,否则在所有情况下都没有什么可以工作的。如果没有可重复的示例,就不可能说出什么可行。还请务必查阅您正在与之交互的网站的服务条款。有时抓取受密码保护的论坛违反服务条款。

标签: r json rvest httr jsonlite


【解决方案1】:

好吧,我想通了。基本上使用带有 session 和 parse_json 的 jump_to 方法而不是 fromJSON 一切都按我的意愿工作。

  jsonSession <- pgsession %>% jump_to(urlJson) 
  data <- jsonlite::parse_json(jsonSession$response, simplifyVector = TRUE)
  df <- as.data.frame(data$data)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    相关资源
    最近更新 更多