Как получить подробный вывод RCurl

У меня есть следующий запрос

library(RCurl)
res=getURL("http://www.google.com/search?hl=en&lr=&ie=ISO-8859-1&q=RCurl&btnG=Search",
           .opts=list(verbose = TRUE)
           )

и хотел бы зафиксировать подробный вывод вызова (т. е. то, что напечатано красным цветом в консоли R). Я думал, что строки вывода являются сообщениями и поэтому печатаются в stderr(). Следующие работы для сообщений

sink(textConnection("test","w"),type="message")
message("test message")
sink(stderr(),type="message")
test
#[1] "test message"

но не в том случае, если я заменю message("test message") запросом RCurl res=getURL(.....), как указано выше. Очевидно, что вывод RCurl не печатается в stderr(). Он также не печатается в stdout().

Итак, как мне зафиксировать вывод?

Дополнительный вопрос: является ли sink(stderr(),type="message") правильным способом вернуть соединение к значению R по умолчанию?

Спасибо за помощь!


person cryo111    schedule 14.11.2013    source источник
comment
Чтобы отправить вывод обратно на консоль: sink() для вывода и sink(type = "message") для stderr. См. примеры в ? sink.   -  person Thomas    schedule 14.11.2013
comment
В порядке! Так что я могу опустить stderr(). Благодарю вас!   -  person cryo111    schedule 15.11.2013


Ответы (1)


Вам нужно использовать функцию debugGatherer:

d <- debugGatherer()
x <- getURL("http://www.google.com/search?hl=en&lr=&ie=ISO-8859-1&q=RCurl&btnG=Search",
    debugfunction = d$update, verbose = TRUE)

Затем вы можете извлечь содержимое verbose, используя:

d$value()

Но я предполагаю, что вам просто нужны два следующих элемента:

> cat(d$value()['text'])
About to connect() to www.google.com port 80 (#0)
  Trying 173.194.112.176... connected
Connected to www.google.com (173.194.112.176) port 80 (#0)
Connection #0 to host www.google.com left intact
Closing connection #0

> cat(d$value()['headerIn'])
HTTP/1.1 200 OK

Date: Thu, 14 Nov 2013 19:54:18 GMT

Expires: -1

Cache-Control: private, max-age=0

Content-Type: text/html; charset=ISO-8859-1

Set-Cookie: PREF=ID=783ad15e124023b0:FF=0:TM=1384458858:LM=1384458858:S=GuYBk1a3SfTJBIjh; expires=Sat, 14-Nov-2015 19:54:18 GMT; path=/; domain=.google.com

Set-Cookie: NID=67=sNsGhMCgjGZFtILEodYKCjxsi0Yio3oSA4xHakDGVHQKxG-fJlY05AlYlJf4Wwcto2HY2uP5Zt2iWxA4Dt0KUWxq14J-F-KvJ38zoBhWBWNxm6Ju0Oupl8gj41USR0PB; expires=Fri, 16-May-2014 19:54:18 GMT; path=/; domain=.google.com; HttpOnly

P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."

Server: gws

X-XSS-Protection: 1; mode=block

X-Frame-Options: SAMEORIGIN

Transfer-Encoding: chunked
person Thomas    schedule 14.11.2013