需求是这样的:
    我一个做业务的哥们儿,他呢要经常联系一些单位,不过,前提是联系的这些单位是有条件的,比如,要注册资金超过500万的单位他们才联系(企业比较牛),领导给我那哥们儿一个重任,就是给了他一个excel表,表里面有一列是各个公司的名字(有4万多个公司的记录),然后在一个专门的网站(好像是什么认证平台网站)查询资金超过500万的公司。我那哥们儿向我诉苦,领导不是人,如果一个一个的查出资金来,然后粘贴到excel中,4万条记录,还不得累死。所以,他拜托我能不能写个小程序,通过那个网站一下子就把每个公司要查的资金给查出来,我也没什么好的思路,所以就到csdn上来问问大牛们的思路看。
   那哥们儿的工作是:
   (1)打开那个网站
   (2)在网页中输入公司的名字,按下查询
   (3)返回结果
   (4)将返回的结果输入excel表中
   (5)重复步骤(1),(2),(3),(4)

解决方案 »

  1.   

    找一个现成的采集软件,把那个企业名传到url里去采集返回的信息应该是个办法。我以前拿这个方法做过获取全国各省市区号的功能。比如:获取北京的区号,就去www.ip138.com/post/search.asp?action=area2zone&area=北京&B1=%B2%E9+%D1%AF,这个url你可以动态构造,这么着采集过来,不过不要太频繁,封了IP就恶心了。
      

  2.   

    额,确实,网站对IP有限制。我现在遇到一个问题就是,
    如下面的代码
    :       foreach (HtmlElement link in links)
                {
                    if (link.GetAttribute("href").Contains("/SignHandle?userID="))
                    {
                        if (link.GetAttribute("href").Contains("/SignHandle?userID=3300000000012888"))
                            continue;                  
                        webBrowser2.Navigate(link.GetAttribute("href").ToString(),true);          link.InvokeMember("click");
                                       objReset.Reset();
                        while (objReset.WaitOne(100, false) == false) { Application.DoEvents(); }
                    }
                    else//查询不到结果
                        isShow = false;
                }
    看红色的两句代码,如果是用Navigate方法的话,由于没有直接在那个网页上点击link,也就是没有触发click事件,那么网页会返回一个信息说,你这个是非法操作。
    如果是用下面的那句invokerMember的方法,倒是可以在新的IE窗口中弹出网页内容来了,可是,由于网页的内容没有在webbrowser中,所以我也无法提取网页中相关的信息。
    所以,如果和在触发link的click的事件下,将网页拦截到WebBrowser中呢?