铜梁视窗是我做的一个地区资讯网站,但是我只有一个人,那么怎么才能让资讯每天源源不断的采集进来的呢?
今天我给大家分享的就是入门方法:定点采集新闻【开发工具VS2012】
采集资讯必须要有的就是一个能够采集各种网页不报错的好方法,下面的代码可以直接复制使用:
private string PushToWeb(string url, Encoding encode) //铜梁视窗www.5atl.com无人采集
{
try
{
string htmlStr = "";
if (!String.IsNullOrEmpty(url))
{
WebRequest request = WebRequest.Create(url); //实例化WebRequest对象
WebResponse response = request.GetResponse(); //创建WebResponse对象
Stream datastream = response.GetResponseStream(); //创建流对象
StreamReader reader = new StreamReader(datastream, encode);
htmlStr = reader.ReadToEnd(); //读取数据
reader.Close();
datastream.Close();
response.Close();
}
return htmlStr;
}
catch
{
return "";
}
}
有的网页是纯文字的,以上方法即可,但是有的网页是带图片的,而你又不想让自己的网站全是别人的外链,这该怎么办?按照以下方法思路解决你的问题吧:
public string GetLocalTextImg(string page, string title) //铜梁视窗www.5atl.com无人采集,图片下载到本地
{
string regimg = "src=\"http:(?<url>[^\"]*)\"";
MatchCollection ms = Regex.Matches(page, regimg);
if (ms == null || ms.Count < 1)
{
return page;
}
foreach (Match m in ms)
{
string imgurl = "http:" + m.Groups[1].Value;
string extend = imgurl.Substring(imgurl.LastIndexOf(".")).ToLower();
bool needsave = true;
if (extend != ".gif" && extend != ".jpg" && extend != ".png" && extend != ".jpeg" && extend != ".gif")
{
needsave = false;
extend = ".png";
}
string dir = "/Attachment/DownImg/" + DateTime.Now.ToString("yyyyMM");
string sdir = Server.MapPath(dir);
string guid = Guid.NewGuid().ToString();
if (!Directory.Exists(sdir))
{
Directory.CreateDirectory(sdir);
}
string path = sdir + "/" + guid + extend;
bool saved = FileHelper.DownWebImg(path, imgurl);
if (!saved)
{
continue;
}
string savedurl = dir + "/" + guid + extend;
page = page.Replace(imgurl, savedurl);
try
{
if (needsave)
{
CMS_Albums alb = new CMS_Albums();
alb.AlbumDescription = title;
alb.AlbumName = title;
alb.AlbumPic = savedurl;
alb.AlbumType = "";
alb.ShopId = 0;
alb.KeyWords = title;
alb.Smallone = savedurl;
alb.PicGuid = guid;
CMS_AlbumsBaseDAL.Create(alb);
}
}
catch
{ }
}
return page;
}
以上两个方法就是网站运行的基础了,明天将发布看铜梁视窗是怎么无人化运行的【一】,网站运营的核心技术,可能你也会,但是或许你以前没有想到过可以这样用!