私はプログラミングが初めてで、F# は私の最初の言語です。
私のコードの関連スニペットは次のとおりです。
let downloadHtmlToDiskAsync (fighterHtmlDirectory: string) (fighterBaseUrl: string) (fighterId: int) =
let fighterUrl = fighterBaseUrl + fighterId.ToString()
try
async {
let! html = fetchHtmlAsync fighterUrl
let fighterName = getFighterNameFromPage html
let newTextFile = File.Create(fighterHtmlDirectory + "\\" + fighterId.ToString("00000") + " " + fighterName.TrimEnd([|' '|]) + ".html")
use file = new StreamWriter(newTextFile)
file.Write(html)
file.Close()
}
with
:? System.Net.WebException -> async {File.AppendAllText("G:\User\WebScraping\Invalid Urls.txt", fighterUrl + "\n")}
let downloadFighterDatabase (directoryPath: string) (fighterBaseUrl: string) (beginningFighterId: int) (endFighterId: int) =
let allFighterIds = [for id in beginningFighterId .. endFighterId -> id]
allFighterIds
|> Seq.map (fun fighterId -> downloadHtmlToDiskAsync directoryPath fighterBaseUrl fighterId)
|> Async.Parallel
|> Async.RunSynchronously
F# Interactive を使用して、関数 fetchHtmlAsync と getFighterNameFromPage をテストしました。どちらも正常に動作します。
ただし、ソリューションをビルドして実行すると、次のエラー メッセージが表示されます。
タイプ 'System.Net.WebException' の未処理の例外が FSharp.Core.dll で発生しました追加情報: リモート サーバーがエラーを返しました: (404) 見つかりません。
何が悪かったのか?どのような変更を加える必要がありますか?