rvest 遇到麻烦
In trouble with rvest
我正在尝试 抓取 HTML 或 JSON 引用世界各地经济学家的网站中的文件。
这是我试图利用的页面示例:
https://ideas.repec.org/f/pan296.html
更准确地说,我正在尝试 抓取 单击按钮 “导出引用” 时显示的数据,在 [=29] =]、HTML 或其他任何内容。
这是我的工作:
test <- rvest::html_session("https://ideas.repec.org/f/pan296.html") %>% jump_to("https://ideas.repec.org/cgi-bin/refs.cgi")
test$response
连接正常,但输出为空:
Response [https://ideas.repec.org/cgi-bin/refs.cgi]
Date: 2020-07-13 08:50
Status: 200
Content-Type: text/plain; charset=utf-8
<EMPTY BODY>
有什么想法吗?
正如阿齐兹所说,你必须观察 POST
请求来重建它。但在这种情况下,由于新选项卡中的请求,工作可能会很棘手。按照此主题查看如何观察在新选项卡中打开的请求:Chrome Dev Tools: How to trace network for a link that opens a new tab?
获取导出内容的代码:
library(rvest)
url <- "https://ideas.repec.org/f/pan296.html"
pg <- html_session(url)
handle_value <- pg %>% html_node(xpath = "//form/input[@name='handle']") %>% html_attr("value")
pg <- pg %>% rvest:::request_POST(url = "https://ideas.repec.org/cgi-bin/refs.cgi",
body = list("handle"= handle_value,
"ref" = "Export references ",
"output" = "0"))
pg$response
(更改output
数值以获得不同的输出格式,0
用于HTML)
我正在尝试 抓取 HTML 或 JSON 引用世界各地经济学家的网站中的文件。 这是我试图利用的页面示例: https://ideas.repec.org/f/pan296.html
更准确地说,我正在尝试 抓取 单击按钮 “导出引用” 时显示的数据,在 [=29] =]、HTML 或其他任何内容。 这是我的工作:
test <- rvest::html_session("https://ideas.repec.org/f/pan296.html") %>% jump_to("https://ideas.repec.org/cgi-bin/refs.cgi")
test$response
连接正常,但输出为空:
Response [https://ideas.repec.org/cgi-bin/refs.cgi]
Date: 2020-07-13 08:50
Status: 200
Content-Type: text/plain; charset=utf-8
<EMPTY BODY>
有什么想法吗?
正如阿齐兹所说,你必须观察 POST
请求来重建它。但在这种情况下,由于新选项卡中的请求,工作可能会很棘手。按照此主题查看如何观察在新选项卡中打开的请求:Chrome Dev Tools: How to trace network for a link that opens a new tab?
获取导出内容的代码:
library(rvest)
url <- "https://ideas.repec.org/f/pan296.html"
pg <- html_session(url)
handle_value <- pg %>% html_node(xpath = "//form/input[@name='handle']") %>% html_attr("value")
pg <- pg %>% rvest:::request_POST(url = "https://ideas.repec.org/cgi-bin/refs.cgi",
body = list("handle"= handle_value,
"ref" = "Export references ",
"output" = "0"))
pg$response
(更改output
数值以获得不同的输出格式,0
用于HTML)