Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何阅读&;爬网网址&;网站文件内容同步#_C# - Fatal编程技术网

C# 如何阅读&;爬网网址&;网站文件内容同步#

C# 如何阅读&;爬网网址&;网站文件内容同步#,c#,C#,我正在开发一个小爬虫,它将只用于我们公司的网站。爬虫程序将获取一个url并对该url进行爬网,读取该url的内容,还提取该页面中的其他url并开始爬网这些url……同样的过程是读取文件内容,以及对其他url进行爬网并读取其内容 我想同时完成所有这些任务。1年多以前,我开发了一个多线程文件下载程序,可以同时下载文件 var list = new[] { "http://google.com", "http://yahoo.com", "http://stackove

我正在开发一个小爬虫,它将只用于我们公司的网站。爬虫程序将获取一个url并对该url进行爬网,读取该url的内容,还提取该页面中的其他url并开始爬网这些url……同样的过程是读取文件内容,以及对其他url进行爬网并读取其内容

我想同时完成所有这些任务。1年多以前,我开发了一个多线程文件下载程序,可以同时下载文件

var list = new[] 
{ 
    "http://google.com", 
    "http://yahoo.com", 
    "http://stackoverflow.com" 
}; 

var tasks = Parallel.ForEach(list,
        s =>
        {
            using (var client = new WebClient())
            {
                Console.WriteLine("starting to download {0}", s);
                string result = client.DownloadString((string)s);
                Console.WriteLine("finished downloading {0}", s);
            }
        });
下面是用于同时下载文件的位片段

var list = new[] 
{ 
    "http://google.com", 
    "http://yahoo.com", 
    "http://stackoverflow.com" 
}; 

var tasks = Parallel.ForEach(list,
        s =>
        {
            using (var client = new WebClient())
            {
                Console.WriteLine("starting to download {0}", s);
                string result = client.DownloadString((string)s);
                Console.WriteLine("finished downloading {0}", s);
            }
        });
如果有人能指导我如何编码以实现我的目标,那将是非常有帮助的。感谢您获得HTML

public string getHTML(string url)
{
 HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
 StreamReader sr = new StreamReader(response.GetResponseStream());
 string html = sr.ReadToEnd();
 sr.Close();
 response.Close();
 return html;
}

要解析代码,请使用如下解析器:

对于简单的答案,您的问题非常广泛,您的代码片段甚至与之无关。请编辑此内容,否则它可能会被关闭。parallel.foreach可以同时运行多少个线程?我很抱歉,我无法正确解释我的问题。我想开发一个小型爬虫程序,当爬虫程序第一次开始解析任何url时,它将从内容中提取所有url,并将这些url添加到队列和中的另一部分同一程序将监视该队列。当一个新url被添加到队列中时,一个新线程将开始解析该url,并从该内容中提取所有url并添加到队列中。完成任何url内容的解析后,该url将从队列中删除。只要指导我的样本代码和想法如何开发这种程序。我不是在阅读网页内容。我的问题是,当我将从页面中提取url时,如何使用任务库递归地同时解析这些页面的内容?如果您有这个想法,我们将不胜感激。