gpt4 book ai didi

r - 抓取请求 rvest 同意 cookie 的站点

转载 作者:行者123 更新时间:2023-12-03 14:31:36 27 4
gpt4 key购买 nike

我想抓取(使用 rvest )一个要求用户同意设置 cookie 的网站。如果我只是抓取页面,则 rvest 只会下载弹出窗口。这是代码:

library(rvest)
content <- read_html("https://karriere.nrw/stellenausschreibung/dba41541-8ed9-4449-8f79-da3cda0cc07c")
content %>% html_text()
结果似乎是请求同意的弹出窗口的内容。
有没有办法忽略或接受弹出窗口或提前设置 cookie 以便我可以访问网站的正文?

最佳答案

正如所建议的,该网站是动态的,这意味着它是由 javascript 构建的。通常从 .js 文件重建(或直接不可能)这是如何完成的非常耗时,但在这种情况下,您实际上可以在浏览器的“网络分析”功能中看到,有一个非隐藏的提供所需信息的 API。
这是对 api.karriere.nrw 的请求。
因此,您可以使用 url 的 uuid(数据库中的标识符)并向 api 发出简单的 GET 请求,然后直接转到源代码,而无需通过 RSelenium 进行渲染,这是额外的时间和资源。
但要友好,并通过某种方式向他们发送与您联系的方式,以便他们可以告诉您停止。

library(tidyverse)
library(httr)
library(rvest)
library(jsonlite)
headers <- c("Email" = "johndoe@company.com")

### assuming the url is given and always has the same format
url <- "https://karriere.nrw/stellenausschreibung/dba41541-8ed9-4449-8f79-da3cda0cc07c"

### extract identifier of job posting
uuid <- str_split(url,"/")[[1]][5]

### make api call-address
api_url <- str_c("https://api.karriere.nrw/v1.0/stellenausschreibungen/",uuid)

### get results
response <- httr::GET(api_url,
httr::add_headers(.headers = headers))
result <- httr::content(response, as = "text") %>% jsonlite::fromJSON()

关于r - 抓取请求 rvest 同意 cookie 的站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64391812/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com