110,500
社区成员
发帖
与我相关
我的任务
分享
//定义全局变量
static Semaphore semaphore = new Semaphore(3, 3); //线程数
private void button1_Click(object sender, EventArgs e)
{
for (Int32 i = 1; i <= 5791; i++)//一共有这么多部漫画
{
semaphore.WaitOne();
mu = i.ToString();//将目录设置为全局变量
Thread thread = new Thread(() => get_url(http + "/comic/" + i + "/"));
thread.Start();
Delay(T_time);//5秒启动一个线程
semaphore.Release();
}
}
//获得每一话的地址
private void get_url(String url)//内容列表页地址url格式为http://m.imanhua.com/comic/201/
{
String html = getHtml(url);//得到源码
if (html == "err")
{
//MessageBox.Show("错误:目标地址无法打开", "错误");
return;
}
else
{
String list = regur1(html, reg1);
list = regur2(list, reg2);
if (list != "err")
{
String[] list_arr = list.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);//集合转为数组
Int32 a = 0;
foreach (String k in list_arr)
{
Get_pic(k, mu + "\\" + (list_arr.Count() - a).ToString()); ///comic/150/list_40827.html#170 m=150 漫画id
a++;
}
}
semaphore.Release();
//这一篇漫画采集完成,关掉当前线程,开启一个新线程
//这一篇漫画采集完成,关掉当前线程,开启一个新线程
}
}
//搞图片
private void Get_pic(String list_url, String mu_path)
{
// String [] s = list_url.Split(new char[]{'#'});
// String url = s[0];
// String url2 = s[1];
String p = upload + mu_path; //保存目录地址
if (makefile(p) == false)//创建文件夹
{
MessageBox.Show("无法创建文件夹,可能的原因有:\n没有磁盘写入权限\n要创建的目录错误\n路径:" + p + "");
return;
}
String html = getHtml(http + list_url);
if (html == "err")
{
MessageBox.Show("错误:目标地址无法打开", "错误");
return;
}
else
{
String pic = regur1(html, reg4);
String[] pic_arr = pic.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
Int32 i = 1;
String pic_up_path=String.Empty;
foreach (String k in pic_arr)
{
Save_img(weburl + k, http + list_url, p + "\\" + i + ".png");//保存图片到指定路径
i++;
}
//这一话采集完
}
}
/////公用方法
......