111,098
社区成员




class SpiderProvider
{
Thread thread;
public SpiderProvider(string[] keys,List<BaseParser> bplist,string path)
{
thread = new Thread(new ParameterizedThreadStart(Run));
object[] param = { keys, bplist ,path};
thread.Start(param);
}
private void Run(object param)
{
object[] param2 = (object[])param;
string[] keys = (string[])param2[0];
string path = (string)param2[2];
List<BaseParser> bplist=(List<BaseParser>)param2[1];
foreach (var key in keys)
{
ThreadPool.QueueUserWorkItem(delegate(object state) {
// outHtml out_ = new outHtml();
//Thread[] threads = new Thread[bplist.Count];//线程数组
//for (int i = 0; i < threads.Length; i++)
//{
// object[] param_T = { bplist[i],state.ToString()};//参数
// threads[i] = new Thread(out_.SetContent);
// threads[i].Start(param_T);
//}
//foreach (Thread t in threads) t.Join();
//SaveHtml(out_.templateString, state.ToString(), state.ToString() + out_.FileName, path);
outHtml html = new outHtml();
foreach (BaseParser item in bplist)
{
}
for (int i = 0; i < bplist.Count; i++)
{
html.templateString = html.SetTemp(bplist[i], bplist[i].Run(state.ToString()), state.ToString());//bplist[i].Run(state.ToString())是得到不同对象返回的值
if (i+1==bplist.Count)
{
SpiderForm.AddText("关键字_" + state.ToString() + "_文件保存成功");
File.WriteAllText(path + @"\" + state.ToString() + html.FileName + ".html", html.templateString, Encoding.Default);
}
}
// SaveHtml(html.templateString, state.ToString(), state.ToString() + html.FileName, path);
},key);
}
}
protected void SaveHtml(string content,string key,string fileName,string path)
{
SpiderForm.AddText("关键字"+key+"文件保存成功");
File.WriteAllText(path + @"\" + fileName + ".html", content, Encoding.Default);
}
}
class outHtml
{
public string templateString;
public string FileName { get; set; }//文件名
public outHtml()
{
templateString = File.ReadAllText("template.htm", Encoding.Default);//读取模板
}
/// <summary>
/// 设置模板内容
/// </summary>
/// <param name="b">当前采集对象</param>
/// <param name="content"></param>
/// <param name="key"></param>
/// <returns></returns>
public string SetTemp(BaseParser b,string content,string key)
{
switch (b.logo)
{
case "soso":
templateString = templateString.Replace("${Soso}", content);
templateString = templateString.Replace("${title}", b.FileName);
FileName = b.FileName;
break;
case "wenwen":
templateString = templateString.Replace("${Wenwen}", content);
break;
case "sosoBlog":
templateString = templateString.Replace("${SosoBlog}", content);
break;
case "xywy":
templateString = templateString.Replace("${Xywy}", content);
break;
case "_1688":
templateString = templateString.Replace("${_1688}", content);
break;
case "sogou":
templateString = templateString.Replace("${Sougou}", content);
break;
default:
break;
}
return templateString;
}
}