我正在尝试使用正则表达式从网站中检索名称。但是,当我运行程序时,我使用“路径中的非法字符”得到错误。这是代码:
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* ", RegexOptions.Singleline);
string givenName = m.Groups[1].Value;
givenNames.Add(givenName);
}
listBox1.DataSource = givenNames;
}
错误发生在String html = web.DownloadString(mainurl);
。我尝试使用HttpUtility.UrlEncode
但它仍然无效。我很感激帮助。
答案 0 :(得分:10)
您需要在网址中包含http://。
string mainurl = "http://www.cpso.on.ca/docsearch/details.aspx?view=1&id=+" + numberurl;
答案 1 :(得分:0)
我的URL来自API端点,因此它以带引号的字符串形式返回,例如name: String, i: List[Int]
。引用的字符串是试图下载文件时使WebClient感到不舒服的原因。
要修复此问题,我在此字符串上调用了方法"\"http://someurl.com/somefile.txt\""
,使它删除了字符串开头和结尾的引号。
此后,字符串变为myUrl.Trim('"')
(不带内引号),然后Web客户端便能够从URL成功下载文件。