2011-01-07 9 views
6

URLを受け取り、その場所にHTMLファイルの内容で構成される文字列を返すOCaml関数を記述したいと思います。何か案は?OCamlでURLのHTMLコンテンツを読む

ありがとうございます!

最高、 Surikator。

私はURLの内容を読み取るためにocurlとnethtml

ocurlを使用して(ここではプロパティのトンを、これが最小である)それらのものの両方をやった

答えて

8

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: >エラー:Unbound value Date.to_mjd) – Surikator

+1

1)そうです。完全にファイルタイプに依存しません。 2)私はソースからインストールしたと思う。ゴディは一貫して私を失ってしまった。 – nlucaroni

+0

Actaully、私はちょうどocurlソースを見ました。私は 'lifetime.ml'ファイル(またはDateモジュール)がまったく表示されません!いくつかの奇妙な依存からである必要がありますか?乾杯! – nlucaroni

関連する問題