这是上个帖子未完的问题,单独开贴发问。
请参见“http://topic.csdn.net/u/20111220/12/31cfb6bc-bb28-4299-b3a5-e67baa0cb500.html?51506”网站:http://bbs.huainet.com/search.php?mod=forum
编程目标:搜索指定关键字,获取帖子数量
例如,搜索“小学教育”,得出结果:
结果:找到“小学教育”相关内容 20 个上午搜索时的网址是:
http://bbs.huainet.com/search.php?mod=forum&searchid=136&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=%D0%A1%D1%A7%BD%CC%D3%FD下午搜索时的网址是:
http://bbs.huainet.com/search.php?mod=forum&searchid=813&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=%D0%A1%D1%A7%BD%CC%D3%FD比较后可以发现:searchid这个参数值从136变为813,而kw=“小学教育”没有变。通过测试可以发现,
这个网站呈现给用户的搜索结果页面是通过searchid来获取数据的。如果不填这个参数,得到的是搜索提交页面而非搜索结果页面!那么,我在C#窗体中,如何编写代码得到这个结果页面呢?或者说如何构造下面代码中的字符串string surl ?小弟初学C#,望各路高人不吝赐教。附代码: private void HuoQu2(string MyWeb_URL2)
{
WebClient MyWeb_Client = new WebClient();
//获取系统凭证
MyWeb_Client.Credentials = CredentialCache.DefaultCredentials; //DownloadData 下载指定URL资源
byte[] MyWeb_b = MyWeb_Client.DownloadData(MyWeb_URL2); string MyWeb_str = Encoding.Default.GetString(MyWeb_b);
//去除html标记
//MyWeb_str = Regex.Replace(MyWeb_str, @"<[^>]+>|</[^>]+>", "").Trim();
this.textBox2.Text = MyWeb_str; //找到搜索结果
Regex r4 = new Regex(@"<h2>[\s\S]*?(\d+)[\s\S]*?</h2>", RegexOptions.Multiline);
string search_result = r4.Match(MyWeb_str).Value;//<h2>结果: <em>找到 “<span class=\"emfont\">小学教育</span>” 相关内容 20 个</em> </h2>
int num = int.Parse(r4.Match(MyWeb_str).Groups[1].Value ?? "0");//20
this.textBox3.Text =num.ToString() + "\r\n" + search_result;
}
private void button1_Click(object sender, EventArgs e)
{
//string surl = "http://bbs.huainet.com/search.php?mod=forum&searchid=136&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=%D0%A1%D1%A7%BD%CC%D3%FD";
//HuoQu2(surl);
HuoQu2(this.textBox1.Text.Trim());
}
请参见“http://topic.csdn.net/u/20111220/12/31cfb6bc-bb28-4299-b3a5-e67baa0cb500.html?51506”网站:http://bbs.huainet.com/search.php?mod=forum
编程目标:搜索指定关键字,获取帖子数量
例如,搜索“小学教育”,得出结果:
结果:找到“小学教育”相关内容 20 个上午搜索时的网址是:
http://bbs.huainet.com/search.php?mod=forum&searchid=136&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=%D0%A1%D1%A7%BD%CC%D3%FD下午搜索时的网址是:
http://bbs.huainet.com/search.php?mod=forum&searchid=813&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=%D0%A1%D1%A7%BD%CC%D3%FD比较后可以发现:searchid这个参数值从136变为813,而kw=“小学教育”没有变。通过测试可以发现,
这个网站呈现给用户的搜索结果页面是通过searchid来获取数据的。如果不填这个参数,得到的是搜索提交页面而非搜索结果页面!那么,我在C#窗体中,如何编写代码得到这个结果页面呢?或者说如何构造下面代码中的字符串string surl ?小弟初学C#,望各路高人不吝赐教。附代码: private void HuoQu2(string MyWeb_URL2)
{
WebClient MyWeb_Client = new WebClient();
//获取系统凭证
MyWeb_Client.Credentials = CredentialCache.DefaultCredentials; //DownloadData 下载指定URL资源
byte[] MyWeb_b = MyWeb_Client.DownloadData(MyWeb_URL2); string MyWeb_str = Encoding.Default.GetString(MyWeb_b);
//去除html标记
//MyWeb_str = Regex.Replace(MyWeb_str, @"<[^>]+>|</[^>]+>", "").Trim();
this.textBox2.Text = MyWeb_str; //找到搜索结果
Regex r4 = new Regex(@"<h2>[\s\S]*?(\d+)[\s\S]*?</h2>", RegexOptions.Multiline);
string search_result = r4.Match(MyWeb_str).Value;//<h2>结果: <em>找到 “<span class=\"emfont\">小学教育</span>” 相关内容 20 个</em> </h2>
int num = int.Parse(r4.Match(MyWeb_str).Groups[1].Value ?? "0");//20
this.textBox3.Text =num.ToString() + "\r\n" + search_result;
}
private void button1_Click(object sender, EventArgs e)
{
//string surl = "http://bbs.huainet.com/search.php?mod=forum&searchid=136&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=%D0%A1%D1%A7%BD%CC%D3%FD";
//HuoQu2(surl);
HuoQu2(this.textBox1.Text.Trim());
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货