Webページをクロールしてすべてのリンクを取得し、最後に返されるlist<string>
に追加しようとしています。Webcrawler - リンクを取得する
マイコード:
let getUrls s : seq<string> =
let doc = new HtmlDocument() in
doc.LoadHtml s
doc.DocumentNode.SelectNodes "//a[@href]"
|> Seq.map(fun z -> (string z.Attributes.["href"]))
let crawler uri : seq<string> =
let rec crawl url =
let web = new WebClient()
let data = web.DownloadString url
getUrls data |> Seq.map crawl (* <-- ERROR HERE *)
crawl uri
問題はクロール機能(getUrlsのseq.map ...)の最後の行で、それは単にエラーをスローしていることである:
Type mismatch. Expecting a string -> 'a but given a string -> seq<'a> The resulting type would be infinite when unifying ''a' and 'seq<'a>'
Seq.collect! :) –
@Mauricio:答えとして投稿する必要があります。 ; - ] – ildjarn
BTW:インスピレーションのため、F#スニペットにいくつかのWebクローリングスニペットがあります。たとえば、http://www.fssnip.net/3Kを参照してください。 –