我是C#的新手,想知道抓取一系列网页的最佳方式。
如果我想获取这样的许多页面的来源: http://website.com/list/1 - http://website.com/list/44
如何让它在1-44范围内抓取每个页面?
谢谢:)
答案 0 :(得分:1)
这是一个不错的简单方法,不是最通用的webcrawler,但会帮助您了解当前的规范
for(int i = 1; i < 45;i++){
string url = "http://website.com/list/"+i;
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);
myRequest.Method = "GET";
WebResponse myResponse = myRequest.GetResponse();
StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
string result = sr.ReadToEnd();
sr.Close();
myResponse.Close();
//do something with the result
}
您必须将此添加到您的使用语句
using System.Text;
using System.Net;
using System.IO;
亲切的问候
答案 1 :(得分:0)
尝试类似......
WebClient wc = new WebClient();
for(int i = 1; i < 45 ; i++)
{
var pageContent = wc.DownloadString("http://website.com/list/" + i);
// do your page content processing here
}
虽然显然你想要为此添加错误处理。
根据应用目标的不同,您可能需要在使用后调用WebClient上的Dispose()。在某些环境中,WebClient实现IDisposable,而在其他环境中则不实现。感谢@Paulo Moretti在评论中提到它。