110,545
社区成员
发帖
与我相关
我的任务
分享
private void btn模拟事件_Click(object sender, EventArgs e)
{
string url = "http://stock.finance.sina.com.cn/hkstock/finance/01398.html";
webBrowser1.Navigate(url);
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//避免webbroswer.DocumentCompleted被多次引发
if ((e.Url != webBrowser1.Url) || (webBrowser1.ReadyState != WebBrowserReadyState.Complete))
return;
//下面写你要在页面加载完毕后执行的代码。
getSelectedCtrl();
}
private void getSelectedCtrl()
{
System.Windows.Forms.HtmlDocument doc = this.webBrowser1.Document;
System.Windows.Forms.HtmlElementCollection selectCtrls = doc.GetElementsByTagName("select");
string attName;
foreach (System.Windows.Forms.HtmlElement selectCtrl in selectCtrls)
{
attName = selectCtrl.GetAttribute("table");
if (attName.Equals("tableGetBalanceSheet"))//如果table属性是资产负债表的话,模拟引发“报表类型”的选择控件
{
//调试过,已经成功进入了该条件语句
// 准备参数.
Object[] args = new Object[1];
args[0] = (Object)"zero"; //zero代表报表类型为“年报”
selectCtrl.InvokeMember("onchange",args);
return;
}
}
}
private void getData()
{
HtmlDocument doc = webBrowser1.Document;
。。。。。
System.Timers.Timer timer = null;
private void Form1_Load(object sender, EventArgs e)
{
string url = "http://stock.finance.sina.com.cn/hkstock/finance/01398.html";
webBrowser1.Navigate(url);
timer = new System.Timers.Timer(1000);
timer.AutoReset = false;
timer.Elapsed += new System.Timers.ElapsedEventHandler(Timer_Elapsed);
}
public delegate void GetDataHandler();
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
Invoke(new GetDataHandler(getData));
timer.Start();
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//避免webbroswer.DocumentCompleted被多次引发
if ((e.Url != webBrowser1.Url) || (webBrowser1.ReadyState != WebBrowserReadyState.Complete))
return;
//下面写你要在页面加载完毕后执行的代码。
getSelectedCtrl();
}
private void getSelectedCtrl()
{
System.Windows.Forms.HtmlDocument doc = this.webBrowser1.Document;
System.Windows.Forms.HtmlElementCollection selectCtrls = doc.GetElementsByTagName("select");
string attName;
foreach (System.Windows.Forms.HtmlElement selectCtrl in selectCtrls)
{
attName = selectCtrl.GetAttribute("table");
if (attName.Equals("tableGetBalanceSheet"))//如果table属性是资产负债表的话,模拟引发“报表类型”的选择控件
{
foreach(HtmlElement option in selectCtrl.Children)
{
if(option.GetAttribute("value") == "zero")
{
option.SetAttribute("selected", "selected");
break;
}
}
selectCtrl.RaiseEvent("onchange");
timer.Start();
return;
}
}
}
private void getSelectedCtrl()
{
System.Windows.Forms.HtmlDocument doc = this.webBrowser1.Document;
System.Windows.Forms.HtmlElementCollection selectCtrls = doc.GetElementsByTagName("select");
string attName;
foreach (System.Windows.Forms.HtmlElement selectCtrl in selectCtrls)
{
attName = selectCtrl.GetAttribute("table");
if (attName.Equals("tableGetBalanceSheet"))//如果table属性是资产负债表的话,模拟引发“报表类型”的选择控件
{
//this.richTextBox1.Text = selectCtrl.InnerText;
// 准备参数.
//Object[] args = new Object[1];
//args[0] = (Object)"zero"; //zero代表报表类型为“年报”
//selectCtrl.InvokeMember("onchange",args);
//return;
foreach (HtmlElement option in selectCtrl.Children)
{
if (option.GetAttribute("value") == "zero")
{
option.SetAttribute("selected", "selected");
break;
}
}
selectCtrl.RaiseEvent("onchange");
timer1.Interval = 5000; //5秒间隔
timer1.Start(); // 计时开始
getData(selectCtrl.Document);//引发事件成功后抓取数据
return;
}
}
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
}
private void getSelectedCtrl()
{
System.Windows.Forms.HtmlDocument doc = this.webBrowser1.Document;
System.Windows.Forms.HtmlElementCollection selectCtrls = doc.GetElementsByTagName("select");
string attName;
foreach (System.Windows.Forms.HtmlElement selectCtrl in selectCtrls)
{
attName = selectCtrl.GetAttribute("table");
if (attName.Equals("tableGetBalanceSheet"))//如果table属性是资产负债表的话,模拟引发“报表类型”的选择控件
{
//调试过,已经成功进入了该条件语句
// 准备参数.
//Object[] args = new Object[1];
//args[0] = (Object)"zero"; //zero代表报表类型为“年报”
//selectCtrl.InvokeMember("onchange", args);
foreach(HtmlElement option in selectCtrl.Children)
{
if(option.GetAttribute("value") == "zero")
{
option.SetAttribute("selected", "selected");
break;
}
}
selectCtrl.RaiseEvent("onchange");
return;
}
}
}
private void getSelectedCtrl()
{
System.Windows.Forms.HtmlDocument doc = this.webBrowser1.Document;
System.Windows.Forms.HtmlElementCollection selectCtrls = doc.GetElementsByTagName("select");
string attName;
foreach (System.Windows.Forms.HtmlElement selectCtrl in selectCtrls)
{
attName = selectCtrl.GetAttribute("table");
if (attName.Equals("tableGetBalanceSheet"))//如果table属性是资产负债表的话,模拟引发“报表类型”的选择控件
{
//this.richTextBox1.Text = selectCtrl.InnerText;
// 准备参数.
//Object[] args = new Object[1];
//args[0] = (Object)"zero"; //zero代表报表类型为“年报”
//selectCtrl.InvokeMember("onchange",args);
//return;
foreach (HtmlElement option in selectCtrl.Children)
{
if (option.GetAttribute("value") == "zero")
{
option.SetAttribute("selected", "selected");
break;
}
}
selectCtrl.RaiseEvent("onchange");
getData(doc);//引发事件成功后抓取数据
return;
}
}
}
private void getData(HtmlDocument doc)
{
StringBuilder str = new StringBuilder();
//System.Windows.Forms.HtmlDocument doc = this.webBrowser1.Document;
System.Windows.Forms.HtmlElement table = doc.GetElementById("tableGetBalanceSheet");//获取资产负债表
System.Windows.Forms.HtmlElementCollection trs;//行的集合
System.Windows.Forms.HtmlElementCollection ths;//项目的集合
System.Windows.Forms.HtmlElementCollection tds;//单元格的集合
int i = 0;//用于行的计数
int j = 0;//用于单元格的计数
int k = 0;//用于年报单元格的计数
this.dataGridView1.Rows.Clear();//清除表的所有行
this.dataGridView1.Columns.Clear();//清除表的列
//获取行集合并遍历之
trs = table.GetElementsByTagName("tr");
foreach (System.Windows.Forms.HtmlElement tr in trs)
{
i++;
//获取项目列的单元格集合并遍历之
ths = tr.GetElementsByTagName("th");
foreach (System.Windows.Forms.HtmlElement th in ths)
{
k++;
if (i == 1)
{
this.dataGridView1.Columns.Add(th.InnerText, th.InnerText);//添加项目列
}
this.dataGridView1.Rows.Add();
this.dataGridView1.Rows[this.dataGridView1.Rows.Count-2].Cells[0].Value=th.InnerText;//填充项目数据
}
//获取普通数据列的单元格并遍历之
tds = tr.GetElementsByTagName("td");
j = 0;
foreach (System.Windows.Forms.HtmlElement td in tds)
{
j++;
str.Append(td.InnerText + " ");
if (i == 1)
{
this.dataGridView1.Columns.Add(td.InnerText, td.InnerText);//添加普通列
}
this.dataGridView1.Rows[this.dataGridView1.Rows.Count - 2].Cells[j].Value = td.InnerText;//填充财务数据
}
str.Append("\n");
}
this.richTextBox1.Text = str.ToString();
}