我正在开发一种小型爬虫,它只会用于我们公司的网站。抓取工具将抓取一个网址并抓取该网址,读取该网址的内容,并在该网页中提取其他网址,然后开始抓取这些网址....同样的过程进行并读取文件内容以及抓取其他网址并阅读他们的网址内容也是如此。
我想同时完成所有这些任务。超过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);
}
});
如果有人指导我如何编写实现我的目标,那将会非常有帮助。感谢
答案 0 :(得分:0)
获取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;
}
要解析代码,请使用以下解析器:HTML Agility Pack