10

我在登录脚本时遇到问题。尽管我在 stackoverflow 上找到了所有其他好的答案,但没有一个解决方案对我有用。

我正在为我的博士研究抓取一个网络论坛,它的 URL 是http://forum.axishistory.com

我要抓取的网页是会员列表 - 一个列出所有会员资料链接的页面。只有登录后才能访问成员列表。如果您尝试在未登录的情况下访问成员列表,它会显示登录表单。

成员列表的 URL 是这样的:http://forum.axishistory.com/memberlist.php

我尝试了 httr 包:

library(httr)
members  <-  GET("http://forum.axishistory.com/memberlist.php", authenticate("username", "password"))
members_html <- html(members)

输出是登录表单。

然后我尝试了 RCurl:

library(RCurl)
members_html <- htmlParse(getURL("http://forum.axishistory.com/memberlist.php", userpwd = "username:password"))
members_html

输出是登录表单 - 再次。

然后我尝试了这个主题中的 list() 函数 - Scrape password-protected website in R

handle <- handle("http://forum.axishistory.com/")
path   <- "ucp.php?mode=login"

login <- list(
  amember_login = "username"
  ,amember_pass  = "password"
  ,amember_redirect_url = 
    "http://forum.axishistory.com/memberlist.php"
)

response <- POST(handle = handle, path = path, body = login)

然后再次!输出是登录表单。

我接下来要做的是 RSelenium,但经过所有这些尝试后,我试图弄清楚我是否可能遗漏了一些东西(可能是完全明显的东西)。

我在这里查看了其他相关帖子,但无法弄清楚如何将代码应用于我的案例:

如何使用 R 从需要 cookie 的 SSL 页面下载压缩文件

在 R 中抓取受密码保护的网站

如何使用 R 从需要 cookie 的 SSL 页面下载压缩文件

https://stackoverflow.com/questions/27485311/scrape-password-protected-https-website-in-r

使用 R 抓取受密码保护的网站

4

1 回答 1

10

感谢 Simon,我在这里找到了答案:Using rvest or httr to login to non-standard forms on a pages

library(rvest)
url       <-"http://forum.axishistory.com/memberlist.php"
pgsession <-html_session(url)

pgform    <-html_form(pgsession)[[2]]

filled_form <- set_values(pgform,
                      "username" = "username", 
                      "password" = "password")

submit_form(pgsession,filled_form)
memberlist <- jump_to(pgsession, "http://forum.axishistory.com/memberlist.php")

page <- html(memberlist)

usernames <- html_nodes(x = page, css = "#memberlist .username") 

data_usernames <- html_text(usernames, trim = TRUE) 
于 2015-09-08T08:59:42.370 回答