6

この政府のウェブサイトのAPIからのデータのダウンロードを自動化しようとしています。

ウェブサイトは指示します:

All requests for this version should be made to the following URL:
http://api.finder.healthcare.gov/v2.0/

xmlリクエストの送信方法に関する情報はたくさんありますが、特定の例はありません。 、、、、およびパッケージRの使用方法を示すRコードはたくさんありますが、例は見つかりませんでした。 SOまたは実際にxmlリクエストを送信する方法のr-helpメーリングリスト。..応答を解析するためのドキュメントがさらにあります。XMLhttrRCurl

政府のWebサイトで、例をクリックするPlansForIndividualOrFamily Samplesと、送信する必要のあるxmlリクエスト(以下のコード)が表示されます。

url <- "http://api.finder.healthcare.gov/v2.0/"

xml.request <-
    "<?xml version='1.0' encoding='UTF-8'?>
    <PrivateOptionsAPIRequest>
        <PlansForIndividualOrFamilyRequest>
            <Enrollees>
                <Primary>
                    <DateOfBirth>1990-01-01</DateOfBirth>
                    <Gender>Male</Gender>
                    <TobaccoUser>Smoker</TobaccoUser>
                </Primary>
            </Enrollees>
            <Location>
                <ZipCode>69201</ZipCode>
                <County>
                    <CountyName>CHERRY</CountyName>
                    <StateCode>NE</StateCode>
                </County>
            </Location>
            <InsuranceEffectiveDate>2012-10-01</InsuranceEffectiveDate>
        <IsFilterAnalysisRequiredIndicator>false</IsFilterAnalysisRequiredIndicator>
        <PaginationInformation>
            <PageNumber>1</PageNumber>
            <PageSize>10</PageSize>
        </PaginationInformation>
        <SortOrder>
            <SortField>OOP LIMIT - INDIVIDUAL - IN NETWORK</SortField>
            <SortDirection>ASC</SortDirection>
        </SortOrder>
        <Filter/>
        </PlansForIndividualOrFamilyRequest>
    </PrivateOptionsAPIRequest>"
4

1 に答える 1

11

あなたを使用RCurlしてこれを行います;

myheader=c(Connection="close", 
            'Content-Type' = "application/xml",
             'Content-length' =nchar(xml.request))
data =  getURL(url = url,
                    postfields=xml.request,
                    httpheader=myheader,
                    verbose=TRUE)

それについてです。次にxpathApply、XMLパッケージを使用してデータを取得できます。たとえば、家族IDを取得するには:

library(XML)
xmltext  <- xmlTreeParse(data, asText = TRUE,useInternalNodes=T)
 unlist(xpathApply(xmltext,'//Plan/PlanID',xmlValue))  ## change the right xpath here

 "29678NE0780012" "29678NE0780011" "29678NE0140010"  
  "29678NE0780010" "29678NE0140019" "29678NE0140018" "29678NE0140017"
  "29678NE0140016" "29678NE0780005" "29678NE0780004"
于 2013-03-06T07:48:46.940 に答える