2013-07-08 2 views
2

https://www.theice.com/productguide/ProductSpec.shtml?specId=251#expiry 다음 웹 페이지에서 R의 만료 날짜 데이터를 긁어 내려고했습니다. 이 페이지에는 몇 개의 탭이 있으며, 만기일은 그 중 하나입니다. 내가 사용하는 코드는여러 탭이있는 웹 페이지를 스크랩하는 중 R

library(RCurl) 
Canola <- 'https://www.theice.com/productguide/ProductSpec.shtml?specId=251#expiry' 
WS <- getURL(Canola,ssl.verifypeer=FALSE) 
library(XML) 
ParsedData <- htmlParse(WS) 
CanolaExpDate <- readHTMLTable(ParsedData) 
names(CanolaExpDate) 

입니다. 그러나 최종 출력물은 첫 번째 탭 제품 사양에 따라 거래가 이루어집니다.

저는 웹 스크래핑에 초보자이며 html에 대해 잘 모릅니다. 제발 조언하십시오.

+1

예상 출력을 표시 할 수 있습니까? – agstudy

+0

data.frame에서 만료일 탭의 모든 데이터를 가져오고 싶습니다. – Lawrence

+0

CanolaExpDate' 목록을 남기고 싶습니까? 'CanolaExpDate $ tradingHours' ?? – agstudy

답변

1

"expiry"에 대한 해당 페이지의 소스 코드를 검색하여 URL이 어떻게 형성되는지를 확인했습니다. #expiry 대신 &expiryDates을 추가하면 분석하기 쉬운 테이블로 연결됩니다.

library(RCurl) 
library(XML) 
Canola <- "https://www.theice.com/productguide/ProductSpec.shtml?specId=251&expiryDates" 
WS <- getURL(Canola) 
x <- readHTMLTable(WS, stringsAsFactors=FALSE) 
as.data.frame(lapply(x[[1]], as.Date, format="%a %b %d %X")) 

# Contract.Symbol  FTD  LTD  FND  LND  FDD  LDD Options.FTD Options.LTD 
#1  2013-07-01 2013-05-16 2013-07-12 2013-06-28 2013-07-15 2013-07-02 2013-07-16  <NA> 2013-06-21 
#2  2013-08-01 2013-03-25 2013-07-26 2013-07-31 2013-08-15 2013-08-01 2013-08-16  <NA> 2013-07-26 
#3  2013-09-01 2013-08-27 2013-08-23 2013-08-30 2013-09-16 2013-09-03 2013-09-17  <NA> 2013-08-23 
#4  2013-10-01 2013-05-27 2013-09-20 2013-09-30 2013-10-15 2013-10-01 2013-10-16  <NA> 2013-09-20 
#5  2013-11-01 2013-07-15 2013-11-14 2013-10-31 2013-11-15 2013-11-01 2013-11-18  <NA> 2013-10-25 
#6  2013-01-01 2013-11-15 2013-01-14 2013-12-31 2013-01-15 2013-01-02 2013-01-16  <NA> 2013-12-20 
#7  2013-03-01 2013-01-17 2013-03-14 2013-02-28 2013-03-17 2013-03-03 2013-03-18  <NA> 2013-02-21 
#8  2013-05-01 2013-03-15 2013-05-14 2013-04-30 2013-05-15 2013-05-01 2013-05-16  <NA> 2013-04-25 
#9  2013-07-01 2013-05-15 2013-07-14 2013-06-30 2013-07-15 2013-07-02 2013-07-16  <NA> 2013-06-20 
#10  2013-11-01 2013-07-16 2013-11-14 2013-10-31 2013-11-17 2013-11-03 2013-11-18  <NA> 2013-10-24 
#11  2013-01-01 2013-11-15 2013-01-14 2013-12-31 2013-01-15 2013-01-02 2013-01-16  <NA> 2013-12-19 
#12  2013-03-01 2013-01-15 2013-03-13 2013-02-27 2013-03-16 2013-03-02 2013-03-17  <NA> 2013-02-20 
#13  2013-05-01 2013-03-15 2013-05-14 2013-04-30 2013-05-15 2013-05-01 2013-05-19  <NA> 2013-04-24 
#14  2013-07-01 2013-05-15 2013-07-14 2013-06-30 2013-07-15 2013-07-02 2013-07-16  <NA> 2013-06-26 

편집 : 내가 위에서 사용 된 URL을 발견하는 방법에 대한 자세한. 실제로 개발자 도구를 사용하지 않았습니다. 난 그냥 마우스 오른쪽 버튼으로 클릭하고 "소스보기"를 선택하고 "만료"를 검색했습니다. 이 그래서,이 JSESSIONID 부분을 생략 시도이

'expiry':'/productguide/ProductSpec.shtml;jsessionid=C59BE223F113CFDD340BF23CC07EEFFC?expiryDates=&specId=251' 

같은이있는 app.urls 섹션 있고 난

https://theice.com/productguide/ProductSpec.shtml?expiryDates=&specId=251 

에 가서 흥미 보였다. URL을 더 멋지게 보였기 때문에 단지 https://www.theice.com/productguide/ProductSpec.shtml?specId=251&expiryDates

으로 리디렉션했습니다.

+0

크롬의 개발자 도구를 사용하여 찾을 수있는 '& expiryDates'를 찾고 있습니까? 당신은 이것을 근원에서 어떻게 찾았습니까? – cylondude

+0

@GSee. 감사합니다. @ cyclondude, 네, 개발자 도구에서 소스를보고 '만료'를 검색 할 수 있습니다. – Lawrence

관련 문제