2013-11-14 27 views
6

Tôi có yêu cầu sau đâyLàm thế nào để nắm bắt RCurl tiết sản lượng

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

và muốn nắm bắt đầu ra tiết của cuộc gọi (ví dụ, những gì được in bằng màu đỏ trong R console). Tôi nghĩ rằng các dòng đầu ra là các thông điệp và do đó được in đến stderr(). Các công trình sau đây cho các tin nhắn

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

nhưng không nếu tôi thay message("test message") bởi yêu cầu RCurl res=getURL(.....) như được đưa ra ở trên. Rõ ràng, đầu ra của RCurl không được in thành stderr(). Nó cũng không được in đến stdout().

Vì vậy, làm cách nào để nắm bắt đầu ra?

Câu hỏi thưởng: Có phải là sink(stderr(),type="message") cách chính xác để đặt kết nối trở lại giá trị mặc định của R không?

Cảm ơn sự giúp đỡ của bạn!

+1

Để gửi đầu ra trở lại bảng điều khiển: 'sink()' cho đầu ra và 'sink (type =" me ssage ")' cho stderr. Xem ví dụ trong '? sink'. – Thomas

+0

Ok! Vì vậy, tôi có thể bỏ qua 'stderr()'. Cảm ơn bạn! – cryo111

Trả lời

8

Bạn cần phải sử dụng debugGatherer chức năng:

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) 

Sau đó bạn có thể kéo ra nội dung verbose sử dụng:

d$value() 

Nhưng, tôi tưởng tượng bạn chỉ muốn hai yếu tố sau:

> 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 
+0

Cảm ơn, Thomas. Giải pháp hoạt động rất tốt! – cryo111

Các vấn đề liên quan