string strconnection = "server=localhost;uid=sa;password=wxj;database=notebook;";
SqlConnection thisconnection = new SqlConnection(strconnection);
thisconnection.Open();
SqlCommand thiscommand = new SqlCommand("select brand,grabfrom from brand", thisconnection);
SqlDataReader thisread = thiscommand.ExecuteReader(); WebClient mywebclient = new WebClient();
mywebclient.Credentials = CredentialCache.DefaultCredentials;
int number = 0;
SqlCommand sqlcommand_successful = null;
string brand = "";
string grab_test= "";
while (thisread.Read())
{
brand += thisread["brand"].ToString();
grab_test += thisread["grabfrom"].ToString();
number++;
Console.WriteLine("这是中关村手机的第" + number + "品牌!" + " " +brand + "\n\n");
byte[] mybyte = mywebclient.DownloadData(grab_test);
string mystring = Encoding.Default.GetString(mybyte);
Regex re = new Regex(@"条,(?<page>[\s\S]*?)\s页");
MatchCollection mc = re.Matches(mystring);
int testabc = 0;
testabc++;
int testint = 0; foreach (Match m in mc)
{ string test = m.Groups["page"].ToString();
int i = int.Parse(test); for (int ztx = 1; ztx <= i; ztx++)
{
WebClient webclient2008 = new WebClient();
webclient2008.Credentials = CredentialCache.DefaultCredentials;
//thisread["grabfrom"].ToString().Replace("1", "3")
byte[] byte2008 = webclient2008.DownloadData(grab_test.Replace("_1.html", "_" + ztx.ToString() + ".html"));
string string2008 = Encoding.Default.GetString(byte2008);
Regex re2 = new Regex(@"<div class=""pro_img"">[\s\S]*?href=""(?<grab1>[\s\S]*?)""[\s\S]*?src=""(?<small_image>[\s\S]*?)""");
MatchCollection mc2 = re2.Matches(string2008);
foreach (Match m2 in mc2)
{
// Console.WriteLine(testabc + m2.Groups["grab1"].ToString() + m2.Groups["small_image"].ToString());
// string abc = m2.Groups["grab1"].ToString();
// Console.WriteLine(abc);
WebClient webclient_end = new WebClient();
webclient_end.Credentials = CredentialCache.DefaultCredentials;
byte[] end_byte = webclient_end.DownloadData(m2.Groups["grab1"].ToString());
string end_string = Encoding.Default.GetString(end_byte);
Regex regex_end = new Regex(@"id=""td_param"">[\s\S]*?href=""(?<grab2>[\s\S]*?)""");
MatchCollection mc_end = regex_end.Matches(end_string);
foreach (Match m_end in mc_end)
{
testint++;
Console.WriteLine(testint + " http://detail.zol.com.cn/" + m_end.Groups["grab2"].ToString());
WebClient ztxweblient = new WebClient();
ztxweblient.Credentials = CredentialCache.DefaultCredentials; byte[] ztxbyte = ztxweblient.DownloadData("http://detail.zol.com.cn/" + m_end.Groups["grab2"].ToString());
string ztxstring = Encoding.Default.GetString(ztxbyte);
Regex ztxregex = new Regex(@"<div\sclass=""mid_bom"">[\s\S]*?<div\sclass=""mid_bom_1"">(?<html_detail>[\s\S]*?)</div><table|<div\sclass=""para_title""><font\sclass=""lan18b"">(?<name>[\s\S]*?)</font>[\s\S]*?class='cheng12'>(?<i_ckjg>[\s\S]*?)</span>[\s\S]*?class=""a_lan12"">(?<i_sjbj>[\s\S]*?)</a>[\s\S]*?手机类型:[\s\S]*?<div\sclass=""para_name2"">(?<i_sjlx>[\s\S]*?)</div>[\s\S]*?手机制式:[\s\S]*?<div\sclass=""para_name2"">(?<i_sjzs>[\s\S]*?)</div>[\s\S]*?<div\sclass=""para_name2"">(?<i_pmsc>[\s\S]*?)</div>|和弦铃声:[\s\S]*?para_name2"">(?<i_hxls>[\s\S]*?)</div>|上市日期:[\s\S]*?<div class=""para_name2"">(?<i_ssrq>[\s\S]*?)</div>");
MatchCollection mc_ztx = ztxregex.Matches(ztxstring);
string result = "";
string name = "";
string i_ckjg = "";
string i_sjbj = "";
string i_sjlx = "";
string i_sjzs = "";
string i_pmsc = "";
string i_hxls = "";
string i_ssrq = "";
string strsql = "";
foreach (Match m_ztx in mc_ztx)
{
byte[] b = System.Text.Encoding.Default.GetBytes(m_ztx.Groups["html_detail"].ToString());
result += Encoding.Default.GetString(b);
name += m_ztx.Groups["name"].ToString();
i_ckjg += m_ztx.Groups["i_ckjg"].ToString();
i_sjbj += m_ztx.Groups["i_sjbj"].ToString();
i_sjlx += m_ztx.Groups["i_sjlx"].ToString();
i_sjzs += m_ztx.Groups["i_sjzs"].ToString();
i_pmsc += m_ztx.Groups["i_pmsc"].ToString();
i_hxls += m_ztx.Groups["i_hxls"].ToString();
i_ssrq += m_ztx.Groups["i_ssrq"].ToString();
Console.WriteLine(m_ztx.Groups["i_ssrq"].ToString());
strsql = "insert into list(brand_id,time_create,url_grab,small_image,url_grab2,html_detail,i_name,i_ckjg,i_sjbj,i_sjlx,i_sjzs,i_pmsc,i_hxls,i_ssrq)values('" + testabc + "','" + DateTime.Now.ToString() + "','" + m2.Groups["grab1"].ToString() + "','" + m2.Groups["small_image"].ToString() + "','http://detail.zol.com.cn/" + m_end.Groups["grab2"].ToString() + "','" + result + "','" + name + "','" + i_ckjg + "','" + i_sjbj + "','" + i_sjlx + "','" + i_sjzs + "','" + i_pmsc + "','" + i_hxls + "','" + i_ssrq + "')";
}
sqlcommand_successful = new SqlCommand(strsql, thisconnection);
thisread.Close();
sqlcommand_successful.ExecuteNonQuery();
}}}}
Console.Write("Grab Finish ……Please Press Enter to Exit Application !");
Console.Read();
走了一遍完整的入口,然后提示:thisread.read()已经关闭,无效如果我删掉thisread.read()的话那么提示:请先关闭thisread.read()求解!
SqlConnection thisconnection = new SqlConnection(strconnection);
thisconnection.Open();
SqlCommand thiscommand = new SqlCommand("select brand,grabfrom from brand", thisconnection);
SqlDataReader thisread = thiscommand.ExecuteReader(); WebClient mywebclient = new WebClient();
mywebclient.Credentials = CredentialCache.DefaultCredentials;
int number = 0;
SqlCommand sqlcommand_successful = null;
string brand = "";
string grab_test= "";
while (thisread.Read())
{
brand += thisread["brand"].ToString();
grab_test += thisread["grabfrom"].ToString();
number++;
Console.WriteLine("这是中关村手机的第" + number + "品牌!" + " " +brand + "\n\n");
byte[] mybyte = mywebclient.DownloadData(grab_test);
string mystring = Encoding.Default.GetString(mybyte);
Regex re = new Regex(@"条,(?<page>[\s\S]*?)\s页");
MatchCollection mc = re.Matches(mystring);
int testabc = 0;
testabc++;
int testint = 0; foreach (Match m in mc)
{ string test = m.Groups["page"].ToString();
int i = int.Parse(test); for (int ztx = 1; ztx <= i; ztx++)
{
WebClient webclient2008 = new WebClient();
webclient2008.Credentials = CredentialCache.DefaultCredentials;
//thisread["grabfrom"].ToString().Replace("1", "3")
byte[] byte2008 = webclient2008.DownloadData(grab_test.Replace("_1.html", "_" + ztx.ToString() + ".html"));
string string2008 = Encoding.Default.GetString(byte2008);
Regex re2 = new Regex(@"<div class=""pro_img"">[\s\S]*?href=""(?<grab1>[\s\S]*?)""[\s\S]*?src=""(?<small_image>[\s\S]*?)""");
MatchCollection mc2 = re2.Matches(string2008);
foreach (Match m2 in mc2)
{
// Console.WriteLine(testabc + m2.Groups["grab1"].ToString() + m2.Groups["small_image"].ToString());
// string abc = m2.Groups["grab1"].ToString();
// Console.WriteLine(abc);
WebClient webclient_end = new WebClient();
webclient_end.Credentials = CredentialCache.DefaultCredentials;
byte[] end_byte = webclient_end.DownloadData(m2.Groups["grab1"].ToString());
string end_string = Encoding.Default.GetString(end_byte);
Regex regex_end = new Regex(@"id=""td_param"">[\s\S]*?href=""(?<grab2>[\s\S]*?)""");
MatchCollection mc_end = regex_end.Matches(end_string);
foreach (Match m_end in mc_end)
{
testint++;
Console.WriteLine(testint + " http://detail.zol.com.cn/" + m_end.Groups["grab2"].ToString());
WebClient ztxweblient = new WebClient();
ztxweblient.Credentials = CredentialCache.DefaultCredentials; byte[] ztxbyte = ztxweblient.DownloadData("http://detail.zol.com.cn/" + m_end.Groups["grab2"].ToString());
string ztxstring = Encoding.Default.GetString(ztxbyte);
Regex ztxregex = new Regex(@"<div\sclass=""mid_bom"">[\s\S]*?<div\sclass=""mid_bom_1"">(?<html_detail>[\s\S]*?)</div><table|<div\sclass=""para_title""><font\sclass=""lan18b"">(?<name>[\s\S]*?)</font>[\s\S]*?class='cheng12'>(?<i_ckjg>[\s\S]*?)</span>[\s\S]*?class=""a_lan12"">(?<i_sjbj>[\s\S]*?)</a>[\s\S]*?手机类型:[\s\S]*?<div\sclass=""para_name2"">(?<i_sjlx>[\s\S]*?)</div>[\s\S]*?手机制式:[\s\S]*?<div\sclass=""para_name2"">(?<i_sjzs>[\s\S]*?)</div>[\s\S]*?<div\sclass=""para_name2"">(?<i_pmsc>[\s\S]*?)</div>|和弦铃声:[\s\S]*?para_name2"">(?<i_hxls>[\s\S]*?)</div>|上市日期:[\s\S]*?<div class=""para_name2"">(?<i_ssrq>[\s\S]*?)</div>");
MatchCollection mc_ztx = ztxregex.Matches(ztxstring);
string result = "";
string name = "";
string i_ckjg = "";
string i_sjbj = "";
string i_sjlx = "";
string i_sjzs = "";
string i_pmsc = "";
string i_hxls = "";
string i_ssrq = "";
string strsql = "";
foreach (Match m_ztx in mc_ztx)
{
byte[] b = System.Text.Encoding.Default.GetBytes(m_ztx.Groups["html_detail"].ToString());
result += Encoding.Default.GetString(b);
name += m_ztx.Groups["name"].ToString();
i_ckjg += m_ztx.Groups["i_ckjg"].ToString();
i_sjbj += m_ztx.Groups["i_sjbj"].ToString();
i_sjlx += m_ztx.Groups["i_sjlx"].ToString();
i_sjzs += m_ztx.Groups["i_sjzs"].ToString();
i_pmsc += m_ztx.Groups["i_pmsc"].ToString();
i_hxls += m_ztx.Groups["i_hxls"].ToString();
i_ssrq += m_ztx.Groups["i_ssrq"].ToString();
Console.WriteLine(m_ztx.Groups["i_ssrq"].ToString());
strsql = "insert into list(brand_id,time_create,url_grab,small_image,url_grab2,html_detail,i_name,i_ckjg,i_sjbj,i_sjlx,i_sjzs,i_pmsc,i_hxls,i_ssrq)values('" + testabc + "','" + DateTime.Now.ToString() + "','" + m2.Groups["grab1"].ToString() + "','" + m2.Groups["small_image"].ToString() + "','http://detail.zol.com.cn/" + m_end.Groups["grab2"].ToString() + "','" + result + "','" + name + "','" + i_ckjg + "','" + i_sjbj + "','" + i_sjlx + "','" + i_sjzs + "','" + i_pmsc + "','" + i_hxls + "','" + i_ssrq + "')";
}
sqlcommand_successful = new SqlCommand(strsql, thisconnection);
thisread.Close();
sqlcommand_successful.ExecuteNonQuery();
}}}}
Console.Write("Grab Finish ……Please Press Enter to Exit Application !");
Console.Read();
走了一遍完整的入口,然后提示:thisread.read()已经关闭,无效如果我删掉thisread.read()的话那么提示:请先关闭thisread.read()求解!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货