base::url читает веб-страницу, но xml2::read_html выдает ошибку 404

Я столкнулся с очень странной проблемой при использовании rvest. Это один из примеров: https://politics.raisethemoney.com/cchristiansen. Эти страницы нормально открываются в любом веб-браузере и могут быть открыты base::url.

A connection with                                                              
description "https://politics.raisethemoney.com/cchristiansen"
class       "url-libcurl"                                     
mode        "r"                                               
text        "text"                                            
opened      "closed"                                          
can read    "yes"                                             
can write   "no"  

При использовании xml2::read_html выдает ошибку 404.

Ошибка в open.connection(x, "rb"): ошибка HTTP 404.

Протестировано как на Rstudio Cloud, так и на локальном компьютере (Windows 10). Я сбит с толку. Любые идеи, почему это может происходить?


person Kim    schedule 22.09.2019    source источник
comment
httr::content(httr::GET("https://politics.raisethemoney.com/cchristiansen")), кажется, работает нормально и дает html_document в качестве вывода (что IIRC совпадает с тем, что xml2 должен делать)   -  person MichaelChirico    schedule 22.09.2019


Ответы (1)


Сервер ищет определенный заголовок в запросе, т.е.

'Accept' : ''

Это необходимо для того, чтобы запрос был передан 200 с сервера. Этот заголовок используется по умолчанию, например, в httr, но я предполагаю, что у вас его нет с методами, которые вы пытаетесь использовать.

Вот несколько быстрых тестов, которые я провел с Python requests (что-то вроде rvest):

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

person QHarr    schedule 22.09.2019