读书人

来帮忙新手进来学习

发布时间: 2012-01-06 22:55:18 作者: rapoo

高手进来帮忙,新手进来学习!
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()

求解!

[解决办法]
进来学习!
[解决办法]
仔细检查下;这个问题根据 提示 估计不难

读书人网 >C#

热点推荐