如何从文本文件中的http链接列表创建异步Web请求
本文关键字:列表 链接 创建 异步 请求 Web http 文本 文件 | 更新日期: 2023-09-27 18:29:15
我创建了一个程序,可以将链接(从网页)下载到htm文件中。我希望做的是测试htm文件中的每个链接,并输出任何损坏的链接。不幸的是,并不是所有下载的链接都以"http://"开头,所以我试图通过使用if语句来避免这个问题。如何将所有链接读取到数组中,然后使用异步web请求和响应在该数组中循环。
private async void button4_Click(object sender, EventArgs e)
{
string text = System.IO.File.ReadAllText(@"C:''Users''Conal_Curran''OneDrive''C#''MyProjects''Web Crawler''URLTester''OP.htm");
List<string> stringlist = new List<string>();
stringlist.Add(text);
if (!text.StartsWith("http://"))
{
foreach (string line in stringlist)
{
var request = WebRequest.Create(text);
var response = (HttpWebResponse)await Task.Factory
.FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null);
Debug.Assert(response.StatusCode == HttpStatusCode.OK);
if (response == null)
{
BrokenLinks.Text = text;
}
else
{
BrokenLinks.Text = "All URLS Are OK";
}
}
}
Regex解析html文件:
string text = System.IO.File.ReadAllText(@"C:''Users''Conal_Curran''OneDrive''C#''MyProjects''Web Crawler''URLTester''OP.htm");
string regex = "href='"(.*)'"";
Match match = Regex.Match(text, regex);
if (match.Success)
{
string link = match.Groups[1].Value;
Console.WriteLine(link);
MessageBox.Show("Going over URLS now Please stand by.");
var request = WebRequest.Create(link);
var response = (HttpWebResponse)await Task.Factory
.FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null);
Debug.Assert(response.StatusCode == HttpStatusCode.OK);
if (response == null)
{
BrokenLinks.Text = text;
label2.ForeColor = System.Drawing.Color.Red;
}
else
{
BrokenLinks.Text = "All URLS Are OK";
label2.ForeColor = System.Drawing.Color.Green;
}
}
我认为这段代码应该让您走上正确的道路。显然,只有当您正在读取的文件是一个带有一个行链接的txt文件时,这才有效。
var lines = File.ReadLines(fileName);//this reads the file one l
foreach (var line in lines){
if (text.StartsWith("http://")){
//execute your request, since it looks like a valid link
} else {
//in this the case url dosn't start with http:// if you want to check it just add http:// to the beginning of the string, otherwise don't do anything.
}
}
如果你想检查链接是否有效,请参考这个答案。我希望这对你有帮助。