5

我正在尝试使用正则表达式从网站检索名称。但是,当我运行程序时,使用“路径中的非法字符”出现错误。这是代码:

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"(没有内引号),然后网络客户端能够成功地从 URL 下载文件。

于 2019-09-16T14:51:32.647 回答