Как использовать POST для запроса данных из Интернета в R

#javascript #r

#javascript #r

Вопрос:

Я изучаю R для получения данных с некоторых веб-сайтов. Здесь я пытаюсь использовать R для запроса результатов Бостонского марафона с этого веб-сайта.

Вот мой код:

 library(httr)

login <- list(RaceYearLowID = "2016", LastName = "Desisa", 
              FirstName = "Lelisa", submit_button = "Search")

url <- "http://registration.baa.org/cfm_Archive/iframe_ArchiveSearch.cfm?mode=resultsamp;RequestTimeout=600amp;snap=47418326amp;"

res <- POST(url, body = login, verbose())
  

Каким-то образом я получил результат в виде:

 -> POST /cfm_Archive/iframe_ArchiveSearch.cfm?mode=resultsamp;RequestTimeout=600amp;snap=47418326amp;
HTTP/1.1
-> Host: registration.baa.org
-> User-Agent: libcurl/7.50.3 r-curl/2.1 httr/1.2.1
-> Accept-Encoding: gzip, deflate
-> Accept: application/json, text/xml, application/xml, */*
-> Content-Length: 467
-> Expect: 100-continue
-> Content-Type: multipart/form-data; boundary=------------------------47d84f94847f4213
->  <- HTTP/1.1 100 Continue
>> --------------------------47d84f94847f4213
>> Content-Disposition: form-data; name="RaceYearLowID"
>> 
>> 2016
>> --------------------------47d84f94847f4213
>> Content-Disposition: form-data; name="LastName"
>> 
>> Desisa
>> --------------------------47d84f94847f4213
>> Content-Disposition: form-data; name="FirstName"
>> 
>> Lelisa
>> --------------------------47d84f94847f4213
>> Content-Disposition: form-data; name="submit_button"
>> 
>> Search
>> --------------------------47d84f94847f4213--

<- HTTP/1.1 200 OK <- Date: Tue, 18 Oct 2016 17:47:31 GMT <- Server:
Microsoft-IIS/6.0 <- X-Powered-By: ASP.NET <- Set-Cookie:
CFID=7150121;expires=Thu, 11-Oct-2046 17:47:31 GMT;path=/ <-
Set-Cookie: CFTOKEN=95945596;expires=Thu, 11-Oct-2046 17:47:31
GMT;path=/ <- Set-Cookie: BAAARCHIVE_ISON=Testing;path=/ <-
Set-Cookie: CFID=7150121;path=/ <- Set-Cookie: CFTOKEN=95945596;path=/
<- Set-Cookie: BIGipServerBAA_registrationpool=304677130.20480.0000;
path=/ <- Transfer-Encoding: chunked <- Content-Type: text/html;
charset=UTF-8 <- Via: 1.1 dc1wsa01.na.coherentinc.com:80
(Cisco-WSA/9.1.1-074) <- Connection: close <- 
>
  

Я проверяю исходный код веб-сайта BAA, он основан на функциях JavaScript.
Есть предложения? Спасибо!

Комментарии:

1. res$content может приблизить вас на шаг, но это в шестнадцатеричном формате

2. content(res, as="parsed") mebbe? Вы читали какую-либо httr документацию?

Ответ №1:

Спасибо вам всем. Я понял, как получить результат. код выглядит следующим образом:

логин <- список (RaceYearLowID = «2014», LastName = «Smithson») URL<-» http://registration.baa.org/cfm_Archive/iframe_ArchiveSearch.cfm?mode=resultsamp;RequestTimeout=600amp;snap=47418326amp;«

res <- POST(url, body = login, verbose(),encode = «форма»)

doc2<-htmlTreeParse(res,encoding = «utf-8»,asText = TRUE)

Doc2 анализируется как стиль html. следующий шаг — как я могу получить данные из этого HTML-файла.