现在几万条数据要插入到数据库,想做一个多线程,向大家求救。。
下面这个循环读文件可以获取1万多个页面,现在我要把这些页面的内容全部抓取的数据全部插入到数据库中,
这些已经OK 了, 就是速度太慢要好几个小时而且还说时间超长,结果报错,
希望大家能够帮我做个多线程。。。 谢谢大家。。
#region 读取文件信息
public void ReadFile()
{
string path = "D:\\Product";
string showUrl = string.Empty;
DirectoryInfo dir = new DirectoryInfo(path);
FileInfo[] filei = dir.GetFiles("*." + "html");
foreach (FileInfo fr in filei)
{
PRODUCT product = new PRODUCT();
//获取文件里面的URL地址
showUrl = "http://www.360buy.com/product/" + fr.Name;
//通过URL地址抓取整个页面
string html = GetPageInfo(showUrl);
//对整个页面进行部分的截取
int firstIndex =html.IndexOf("<div class=\"clear\">");
int lastIndex = html.IndexOf("<div id=\"suit\"></div>");
string myHtml = html.Substring(firstIndex, lastIndex);
//对市场价进行转换
double marchePriceInt = ConvertToint(SplitPrice(myHtml, this.txtFirstPrice.Text, this.txtLastPrice.Text, this.ckMarketPrice));
//获取导航栏的集合添加到实体对象中...
Dictionary<string, string> dis = NavigateTitle(myHtml);
product.Product_DefaultPage = dis["one"];
product.Product_IndexPage = dis["two"];
product.Product_List = dis["three"];
product.Product_Type = dis["four"];
//将获取到的数据封装在实体对象中
product.Product_ID = SplitProductNo(myHtml, this.txtFirstNo.Text, this.txtLastNo.Text, this.ckNO);
product.Product_Name = SplitProductTitle(myHtml, this.txtFirstTitle.Text, this.txtLastTitle.Text, this.ckTitle);
product.WebPrice = SplitJingDong(myHtml, this.txtFirstJingD.Text, this.txtLastJingD.Text, this.ckWebPrice);
product.MarketPrice = marchePriceInt;
product.ProductProperty = SplitProperty(myHtml, this.txtFirstProductProperty.Text, this.txtLastProductProperty.Text, this.ckProperty);
product.Product_Detail = SplitDetailed(myHtml, this.txtFirstDetail.Text, this.txtLastDetail.Text, this.ckDetail);
product.Parameter = SplitParameter(myHtml, this.txtFirstParam.Text, this.txtLastParam.Text, this.ckParameter);
product.ProductBox = SplitBox(myHtml, this.txtFirstBox.Text, this.txtLastBox.Text, this.ckBox);
product.ProductService = SplitService(myHtml, this.txtFirstService.Text, this.txtLastService.Text, this.ckService);
product.PicTitle = product.Product_Name;
product.PicPath = SplitPicPath(myHtml, this.txtFirstPicPath.Text, this.txtLastPicPath.Text, this.ckPicPath);
try
{
//将匹配出来的完整结果插入到数据库中去
ACCESS access = new ACCESS();
access.InsertProduct(product);
}
catch
{
Response.Write("<script>alert('插入数据时出错拉!!');</script>");
}
}
}