用webBrowser控件在A页面中点击超链接后弹出B页面,如何实现在B页面获取信息,然后关闭B页面,回到A页面点击下一个超链接,再次获取B页面的信息。循环操作,直至取完信息为止。
需要获取信息的网址:http://tool.httpcn.com/Zi/PinYin.html
目的:获取对应拼音中的汉字
麻烦高手门多多指点。

解决方案 »

  1.   

    Microsoft.International.Converters.PinYinConverter 这个控件可能能帮到你 而不是靠网页抓取
      

  2.   

    这个我尝试过,我做出我需要的功能。但是公司现在想要一个比较完整的拼音库,我之前在网上抓取了三个拼音库,但是都不是很全,现在找到一个比较全的网站,想抓取。可是用之前的方法实现不了,以下是我抓取的方法;
     public partial class Form1 : Form
        {
            public static string LastUrl = "";      //上一次访问的URL
            public static string strClick = "a";    //当前点击的拼音
            public static int page = 0;             //当前页面(0为字母页面,1为汉字页面)        public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                //抓取数据的网址
                webBrowser1.Url = new Uri("http://zidian.911cha.com/pinyin.html");
            }        private void button1_Click(object sender, EventArgs e)
            {
                HtmlDocument doc = webBrowser1.Document;
                //是否需要点击
                bool isClick = false;
                //获取属性名称为超链接的内容
                foreach (HtmlElement var in doc.GetElementsByTagName("A"))  
                {
                    string strtest = var.OuterHtml;
                    //判断超链接的特征,符合就点击
                    if (var.OuterHtml.Contains("class=f14") && var.OuterHtml.Contains(".html\"")) 
                    {
                        //如果为 True 则点击进入获取汉字页面
                        if (isClick)
                        {
                            var.InvokeMember("Click");    //访问该超链接
                            strClick = var.InnerHtml;
                            break;
                        }
                        if (var.InnerHtml == strClick)
                        {
                            isClick = true;
                        }
                        else
                        {
                            isClick = false;
                        }
                    }
                }
            }        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                #region 防止多次调用
                if (webBrowser1.ReadyState < WebBrowserReadyState.Complete || webBrowser1.Url.ToString() == LastUrl)
                    return;
                LastUrl = webBrowser1.Url.ToString();
                #endregion
                
                HtmlDocument doc = webBrowser1.Document;
                if (page == 0)
                {
                    page = 1;
                    this.button1_Click(sender, e);
                }
                else
                {
                    //获取属性名称为超链接的内容
                    foreach (HtmlElement var in doc.GetElementsByTagName("A"))
                    {
                        //判断超链接的特征,符合就将数据插入数据库
                        if (var.OuterHtml.Contains("<A class=f14 title") && var.OuterHtml.Contains("html\" target=_blank"))
                        {
                            string strValue = var.InnerHtml;
                            App_Code.Data.insertPy(strClick, strValue);    //将抓取的汉字插入数据库
                            labelX1.Text = strClick;                       //用于显示当前抓取的拼音
                        }
                    }
                    //判断是否为最后一个拼音
                    if (strClick == "zuo")
                    {
                        MessageBox.Show("任务完成!");
                        return;
                    }
                    //返回上一页
                    webBrowser1.GoBack();
                    page = 0;
                }
            }
        }