2011-01-07 5 views
6

URL을 취하여 그 위치에서 HTML 파일의 내용으로 구성된 문자열을 반환하는 OCaml 함수를 작성하고 싶습니다. 어떤 아이디어?OCaml에서 URL의 HTML 내용 읽기

고맙습니다.

최고, Surikator.

답변

8

나는 URL의 내용을 읽을 수 ocurl 및 nethtml

ocurl를 사용하는 일 모두 완료했습니다 (여기 특성의 톤을, 이것은 최소한),

let string_of_uri uri = 
    try let connection = Curl.init() and write_buff = Buffer.create 1763 in 
     Curl.set_writefunction connection 
       (fun x -> Buffer.add_string write_buff x; String.length x); 
     Curl.set_url connection uri; 
     Curl.perform connection; 
     Curl.global_cleanup(); 
     Buffer.contents write_buff; 
    with _ -> raise (IO_ERROR uri) 

nethtml에서을 ;

let parse_html_string uri = 
    let ch = new Netchannels.input_string (string_of_uri uri) in 
    let docs = Nethtml.parse ?return_pis:(Some false) ch in 
    ch # close_in(); 
    docs 

건배를 (당신은 Nethtml.parse에 대한 DTD를 설정해야 할 수도 있습니다)!

+0

@nlucaroni 답변에 감사드립니다. 그것은 내가 원하는 것입니다. 몇 가지 간단한 질문 : (1) 다른 파일 (예 : JPEG 파일)을 포함하는 URL에 string_of_uri 함수를 사용하여 해당 파일 내용의 일부를 분석 할 수 있습니까? (의미는 걱정하지 않지만 인코딩은 걱정하지 마십시오)? (2) ocurl을 설치할 수 없었습니다 (GODI가 말했습니다 :> 파일 "lifetime.ml", 16 행, 문자 25-36 : > 오류 : 언 바운드 값 Date.to_mjd), 어떤 아이디어입니까? – Surikator

+1

1) 오오. 전적으로 파일 유형에 상관없이. 2) 소스에서 설치했다고 생각합니다. 고디는 끊임없이 나를 실패 시켰습니다. – nlucaroni

+0

Actaully, 나는 방금 ocurl 소스를 보았다. 나는 '평생 .ml'파일 (또는 날짜 모듈)이 전혀 보이지 않는다 !! 이상한 의존성 때문일거야? 건배! – nlucaroni