マイ小遣い仕分け:さよならIPSJ

退会する前に、会報をダウンロードしておかねば。

 

というわけで、WatiNのサンプルです。IE9ではダウンロードがうまくいきません。IE8でも、やや不安定ですが、1万個のうち数十個のpdfが抜けてもこまりゃしないでしょ?

 

 

 

   

            // ブラウザを起動 
            var browser = new IE();

   

            // トップページへ移動      
            browser.GoTo("http://www.bookpark.ne.jp/ipsj/");

   

            // ログイン    
            try      
            {      
                browser.TextField(Find.ByName("name")).TypeText("ユーザID");      
                browser.TextField(Find.ByName("password")).TypeText("パスワード");      
                browser.Image(Find.BySrc("http://www.bookpark.ne.jp/ipsj/img/login.gif")).Click();      
            }      
            catch      
            {      
                System.Console.WriteLine("ログイン済み");      
            }

   

            // 会報    
            browser.GoTo("http://www.bookpark.ne.jp/cm/ipsj/select.asp?category1=Magazine&mode=PDF");

   

            // ダウンロード    
//          IReturnDialogHandler returnDialogHandler = ReturnDialogHandler.CreateInstance();      
//          browser.AddDialogHandler( returnDialogHandler );

   

            // 次ページ(ページをスキップ)    
            // /cm/negi/pagenext.gif      
            for (int i = 0; i < 174; i++)      
            {      
                browser.Image(Find.BySrc("http://www.bookpark.ne.jp/cm/negi/pagenext.gif")).Click();      
            }

   

            while (true)    
            {      
                foreach (Link link in browser.Links)      
                {      
                    string href = link.Url.ToString();      
                    if (href.StartsWith("http://shelf3.bookpark.ne.jp/pdf/view.asp?site_id=IPSJ")      
                       && !href.Contains("nf=view"))      
                    {      
                        Regex reg = new Regex("of=(?<name>.*)&nf");      
                        Match m = reg.Match(href);      
                        string name = m.Groups["name"].Value;      
                        FileDownloadHandler fileDownloadHandler = new FileDownloadHandler(name + ".pdf");      
                        System.Threading.Thread.Sleep(500);      
                        browser.AddDialogHandler(fileDownloadHandler);      
                        System.Threading.Thread.Sleep(300);      
                        link.ClickNoWait();      
                        System.Threading.Thread.Sleep(300);      
                        try      
                        {      
                            fileDownloadHandler.WaitUntilFileDownloadDialogIsHandled(20);      
                            fileDownloadHandler.WaitUntilDownloadCompleted(120);      
                        }      
                        catch      
                        {      
                            System.Console.WriteLine("ダウンロード失敗?");      
                        }      
                        System.Threading.Thread.Sleep(300);      
                        browser.Re
moveDialogHandler(fileDownloadHandler);      
                    }      
                }

   

                // 次ページ    
                // /cm/negi/pagenext.gif      
                browser.Image(Find.BySrc("http://www.bookpark.ne.jp/cm/negi/pagenext.gif")).Click();      
            }

   

            return;

 

モリモリダウンロード。

 

20111123224659

 

20111124204837

 

このプログラムを動かして体感したのは、

 

   

WatiNて、ダイアログが絡むと信頼性低いな~

 

です。

 

# だから「なんでもかんでもOKボタンを押す」コードがもてはやされるわけですかね。