使用 rvest 抓取部分受登录保护的网站

问题描述 投票:0回答:1

我想从网页中删除一些数据,但该页面部分受用户名/密码保护。 我想废弃仅在登录后可用的数据。我找到了清除登录后如何导航的方法,所以之后没有问题。

但是我遇到的问题是我的页面似乎找不到。 在下面的代码中,网址是我可以输入信息进行登录的位置。当我使用

html_session
函数甚至最新的
session
函数时,我收到错误:“在 session_set_response(x, resp) 中:不是已找到(HTTP 404)。”

(在 stackoverflow 上提出的类似问题中找到了代码:使用 rvest 抓取带有登录页面的网站

library(rvest)

#login
url <- "https://leghe.fantacalcio.it/login"
session <- html_session(url)

form <- html_form(read_html(url))[[1]]

filled_form <- set_values(form,
                          username = "notmyrealemail",
                          password = "notmyrealpassword")

submit_form(session, filled_form)

我还发现了一个已弃用的解决方案,其中包含

request_POST
功能,该解决方案允许在登录清除后同时输入我们想要导航到的 URL。但自从它被弃用以来,我没有找到任何类似的功能。

r web-scraping rvest
1个回答
0
投票

尽管出现404,但内容确实已送达。不确定这是否是某种配置问题或旨在混淆机器人和自动化工具的问题。

虽然这没有多大区别,因为整个用户界面(包括登录表单)是由浏览器中的 JavaScript 呈现的,并且

html_session()
几乎会得到空文档(您可以在浏览器中检查
view-source:https://leghe.fantacalcio.it/login
)。

您可能会更幸运地使用

rvest::read_html_live()
,它将通过
chromote
/ Chrome 打开该页面,并允许您与实时会话进行交互。

library(rvest)

url_ <- "https://leghe.fantacalcio.it/login"
session <- read_html_live(url)

# fill form, click on LOGIN button
session$type("input[formcontrolname='username']", "notmyrealemail")
session$type("input[formcontrolname='password']", "notmyrealpassword")
session$click("button")

# check current view
session$view()

# continue with the session 
session |> 
  html_elements("title")

© www.soinside.com 2019 - 2024. All rights reserved.