Проблемы с Rvest - PullRequest
       35

Проблемы с Rvest

0 голосов
/ 13 июля 2020

Я пытаюсь выбросить файл HTML или JSON на сайте, который ссылается на экономистов со всего мира. Вот пример страницы, которую я пытаюсь использовать: https://ideas.repec.org/f/pan296.html

Точнее, я пытаюсь удалить данные, отображаемые при нажатии на кнопку "Экспорт ссылок «, JSON, 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>

Есть идеи?

1 Ответ

2 голосов
/ 13 июля 2020

Как сказал Азиз, вы должны выполнить запрос POST, чтобы восстановить его. Но в этой ситуации работа может быть сложной, так как запрос в новой вкладке. Следуйте этому топу c, чтобы увидеть, как вы можете наблюдать, как запрос открывается в новой вкладке: Chrome Инструменты разработчика: как отследить сеть для ссылки, которая открывает новую вкладку?

Код для получения содержимого экспорта:

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)

введите описание изображения здесь

...