5

正規表現を使用してWebサイトから名前を取得しようとしています。ただし、プログラムを実行すると、「パスに不正な文字が含まれています」というエラーが発生します。コードは次のとおりです。

private void button1_Click(object sender, EventArgs e)
{
    List<string> givenNames = new List<string>();

    WebClient web = new WebClient();

    for (int i = 10000; i <= 33852; i++)
    {   
        string numberurl = i.ToString();
        string mainurl = "www.cpso.on.ca/docsearch/details.aspx?view=1&id=+" + numberurl;
        String html = web.DownloadString(mainurl);

        Match m = Regex.Match(html, @"</strong>\s*(.+?)\s*&nbsp;", RegexOptions.Singleline);

        string givenName = m.Groups[1].Value;
        givenNames.Add(givenName);
    }
    listBox1.DataSource = givenNames; 
}

エラーはで発生しString html = web.DownloadString(mainurl);ます。使ってみましたが、うまくいきHttpUtility.UrlEncodeませんでした。私は助けに感謝します。

4

2 に答える 2

11

URLにhttp://を含める必要があります。

string mainurl = "http://www.cpso.on.ca/docsearch/details.aspx?view=1&id=+" + numberurl;
于 2012-08-03T17:32:37.960 に答える
0

私のURLはAPIエンドポイントから取得されたため、のように引用符で囲まれた文字列として返されました"\"http://someurl.com/somefile.txt\""。引用符で囲まれた文字列は、ファイルをダウンロードしようとしたときにWebClientを混乱させたものです。

これを修正するためにmyUrl.Trim('"')、この文字列でメソッドを呼び出し、文字列の最初と最後から引用符を削除しました。

この後、文字列は"http://someurl.com/somefile.txt"(内部引用符なしで)なり、WebクライアントはURLからファイルを正常にダウンロードできました。

于 2019-09-16T14:51:32.647 に答える