请问为什么我把网页输出的结果添加到listbox1,这里没有被执行呢?要点击两次button3按钮他才会执行。
我想做个百度指数的查询工具,用chinaz的查询页面,给输入框赋值并点击按钮后网页会列出结果,我想把这些结果添加到listbox1 但不知道他为什么没有执行,不太明白事件的原理,大大们解答下啊 谢谢。 private void button3_Click(object sender, EventArgs e)
{
//URL=http://tool.chinaz.com/baidu/words.aspx
//给输入框赋值并点击查询按钮,点击后网页会增加一些html元素,也就是点击后输出的结果
webBrowser1.Document.GetElementById("kw").InnerText = textBox1.Text;
webBrowser1.Document.GetElementsByTagName("input")[1].InvokeMember("click");
//把结果添加listbox1(以下的代码没有被执行)
if (webBrowser1.ReadyState==WebBrowserReadyState.Complete)
{
HtmlElementCollection htma = webBrowser1.Document.Links;
HtmlElement htm;
foreach (HtmlElement item in htma)
{ if (item.InnerHtml.Contains(textBox1.Text))
{
listView1.Items.Add(item.InnerText);
}
}
}
}
我想做个百度指数的查询工具,用chinaz的查询页面,给输入框赋值并点击按钮后网页会列出结果,我想把这些结果添加到listbox1 但不知道他为什么没有执行,不太明白事件的原理,大大们解答下啊 谢谢。 private void button3_Click(object sender, EventArgs e)
{
//URL=http://tool.chinaz.com/baidu/words.aspx
//给输入框赋值并点击查询按钮,点击后网页会增加一些html元素,也就是点击后输出的结果
webBrowser1.Document.GetElementById("kw").InnerText = textBox1.Text;
webBrowser1.Document.GetElementsByTagName("input")[1].InvokeMember("click");
//把结果添加listbox1(以下的代码没有被执行)
if (webBrowser1.ReadyState==WebBrowserReadyState.Complete)
{
HtmlElementCollection htma = webBrowser1.Document.Links;
HtmlElement htm;
foreach (HtmlElement item in htma)
{ if (item.InnerHtml.Contains(textBox1.Text))
{
listView1.Items.Add(item.InnerText);
}
}
}
}
解决方案 »
- 请教,C#写的如通讯录一类的小程序,制作成安装包一般有多大?
- 急!!!串口标签读写器的问题。。。请高手指点迷津
- 数据转换问题
- C# socket 使用Udp通讯
- 寻连接数据库方案
- 如何超过这个JAVA!ACM问题!
- 如何用正则将html文件内的<img src="123.gif"></img>标记中Src的内容提取出来?
- 高分求教直播流的问题
- 各位大侠:怎么用c#操作SQLSEVER里的数据
- winform datagridview绑定datatable 如何多线程高效率删除datatabe数据
- 如何获取搜狐新闻发表评论时候的POSTDATA
- 如何构造MIME-type multipart/form-data类型的postdata???
{
webBrowser1.Document.GetElementById("kw").InnerText = textBox1.Text;
webBrowser1.Document.GetElementsByTagName("input")[1].InvokeMember("click");
//把结果添加listbox1(以下的代码没有被执行)
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
HtmlElementCollection htma = webBrowser1.Document.Links;
HtmlElement htm;
foreach (HtmlElement item in htma)
{ if (item.InnerHtml.Contains(textBox1.Text))
{
MessageBox.Show(item.InnerText);
}
}
}
}
无意中发现要在执行完模拟点击后加个Messbox.show弹出对话框 ,再点了确认才会继续执行下去,但这样好别扭。 private void button3_Click(object sender, EventArgs e) { //URL=http://tool.chinaz.com/baidu/words.aspx webBrowser1.Document.GetElementById("kw").InnerText = textBox1.Text; webBrowser1.Document.GetElementsByTagName("input")[1].InvokeMember("click"); MessageBox.Show("查询完成"); if (webBrowser1.ReadyState==WebBrowserReadyState.Complete) { HtmlElementCollection htma = webBrowser1.Document.Links; HtmlElement htm; foreach (HtmlElement item in htma) { if (item.InnerHtml.Contains(textBox1.Text)) { listView1.Items.Add(item.InnerText); } } } }
{
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
webBrowser1.Document.GetElementById("kw").InnerText = textBox1.Text;
webBrowser1.Document.GetElementsByTagName("input")[1].InvokeMember("click");
}
//把结果添加listbox1
MessageBox.Show("对话框");
if (webBrowser1.DocumentText.Contains("没有找到相关的关键字"))
{
HtmlElementCollection htma = webBrowser1.Document.Links;
int acont = 0;
foreach (HtmlElement item in htma)
{
if (item.InnerHtml.Contains(textBox1.Text))
{
listView1.Items.Add(item.InnerText);
acont++;
}
}
}
}
{
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
webBrowser1.Document.GetElementById("kw").InnerText = textBox1.Text;
webBrowser1.Document.GetElementsByTagName("input")[1].InvokeMember("click");
}
}然后在Button_Click事件中去把结果添加到Listbox1中,如:private void button3_Click(object sender, EventArgs e)
{
//把结果添加listbox1(以下的代码没有被执行)
if (webBrowser1.ReadyState==WebBrowserReadyState.Complete)
{
HtmlElementCollection htma = webBrowser1.Document.Links;
HtmlElement htm;
foreach (HtmlElement item in htma)
{
if (item.InnerHtml.Contains(textBox1.Text))
{
listView1.Items.Add(item.InnerText);
}
}
}
}
可以了谢谢,应该是把模拟点击放在button按钮里面,再在WebBrowser_DocumentCompleted 事件里判断,再添加结果到listbox1吧
但我发现这样写,有时并没有把模拟点击后输出的结果添加到listbox里,这是webBrowser1_DocumentCompleted事件没有被触发吗
我是这样写的: int webcont = 0;
private void checkBut_Click_1(object sender, EventArgs e)
{
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
webBrowser1.Document.GetElementById("kw").InnerText = textBox1.Text;
webBrowser1.Document.GetElementsByTagName("input")[1].InvokeMember("click");
webcont++;
}
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (webcont == 1)
{
HtmlElementCollection htma = webBrowser1.Document.Links;
int acont = 0;
foreach (HtmlElement item in htma)
{
if (item.InnerHtml.Contains(textBox1.Text))
{
listView1.Items.Add(item.InnerText);
acont++;
}
}
for (int i = 0; i <= acont * 3; i++)
{
string span = webBrowser1.Document.GetElementsByTagName("span")[i].InnerText;
Regex reg = new Regex(@"\d+\d");
if (span != null)
{
Match math = reg.Match(span);
if (reg.IsMatch(span))
{
listView1.Items.Add(span);
}
}
}
webcont--;
}
}