使用 R 和 rvest/httr 通过登录和重定向进行 Web 抓取
Web-Scraping with Login and Redirect using R and rvest/httr
我想从网页上抓取信息。有一个登录屏幕,当我登录后,我可以访问各种我想从中抓取信息的关闭页面(例如玩家的姓氏,对象 .lastName
)。
我正在使用 R 和包 rvest
和 httr
.
不知何故,登录似乎有效,但我不知道如何重定向到我需要从中获取信息的页面。
可以在 http://kickbase.sky.de/anmelden
上访问登录表单,相关页面的形式为 http://kickbase.sky.de/spielerprofil/player-name/number
,例如http://kickbase.sky.de/spielerprofil/nadiem-amiri/1639#
.
这是我使用的代码。非常感谢您的帮助。
install.packages("rvest")
install.packages("httr")
library(rvest)
library(httr)
handle <- handle("http://kickbase.sky.de") # Create handle
path <- "anmelden" # Login Path
# fields found in the login form.
login <- list(
email = "testscrape@gmail.com"
,password = "tester"
,redirect_url = # I want to be redirected to this page and then scrape info from here
"http://kickbase.sky.de/spielerprofil/nadiem-amiri/1639#"
)
response <- POST(handle = handle, path = path, body = login)
webpage <- read_html(response)
name_data <- html_text(html_nodes(webpage, ".lastName"))
name_data
library(rvest)
url<-"https://kickbase.sky.de/"
page<-html_session(url)
page<-rvest:::request_POST(page,url="https://kickbase.sky.de/api/v1/user/login",
body=list("email"="testscrape@gmail.com",
"password"="tester",
"redirect_url"="http://kickbase.sky.de/spielerprofil/nadiem-amiri/1639#"),
encode='json'
)
player_page<-jump_to(page,"https://kickbase.sky.de/api/v1/news?skip=0&player=1639&limit=3")
data<-jsonlite::fromJSON(readBin(player_page$response$content,what="json"))
print(data)
请注意,该网站提供了一个 API,这是您获取数据的地方
https://kickbase.sky.de/api/v1/news?skip=0&player=1639&limit=3
变量 data
具有所需的所有信息
我想从网页上抓取信息。有一个登录屏幕,当我登录后,我可以访问各种我想从中抓取信息的关闭页面(例如玩家的姓氏,对象 .lastName
)。
我正在使用 R 和包 rvest
和 httr
.
不知何故,登录似乎有效,但我不知道如何重定向到我需要从中获取信息的页面。
可以在 http://kickbase.sky.de/anmelden
上访问登录表单,相关页面的形式为 http://kickbase.sky.de/spielerprofil/player-name/number
,例如http://kickbase.sky.de/spielerprofil/nadiem-amiri/1639#
.
这是我使用的代码。非常感谢您的帮助。
install.packages("rvest")
install.packages("httr")
library(rvest)
library(httr)
handle <- handle("http://kickbase.sky.de") # Create handle
path <- "anmelden" # Login Path
# fields found in the login form.
login <- list(
email = "testscrape@gmail.com"
,password = "tester"
,redirect_url = # I want to be redirected to this page and then scrape info from here
"http://kickbase.sky.de/spielerprofil/nadiem-amiri/1639#"
)
response <- POST(handle = handle, path = path, body = login)
webpage <- read_html(response)
name_data <- html_text(html_nodes(webpage, ".lastName"))
name_data
library(rvest)
url<-"https://kickbase.sky.de/"
page<-html_session(url)
page<-rvest:::request_POST(page,url="https://kickbase.sky.de/api/v1/user/login",
body=list("email"="testscrape@gmail.com",
"password"="tester",
"redirect_url"="http://kickbase.sky.de/spielerprofil/nadiem-amiri/1639#"),
encode='json'
)
player_page<-jump_to(page,"https://kickbase.sky.de/api/v1/news?skip=0&player=1639&limit=3")
data<-jsonlite::fromJSON(readBin(player_page$response$content,what="json"))
print(data)
请注意,该网站提供了一个 API,这是您获取数据的地方
https://kickbase.sky.de/api/v1/news?skip=0&player=1639&limit=3
变量 data
具有所需的所有信息