Exemplo n.º 1
0
        private async void bt_spider_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(tb_question.Text))
            {
                lb_msg.Text = "请输入问题ID";
                return;
            }
            bt_spider.Enabled = false;

            _question = tb_question.Text.Trim();
            _url      = Path.Combine(StaticResources.QUESTION_URL, tb_question.Text);
            if (File.Exists(StaticResources.COOKIE_FILE_PATH))
            {
                var file01 = File.ReadAllBytes(StaticResources.COOKIE_FILE_PATH);
                _cookieContainers = FormatterComm.Deserialize <CookieContainer>(Encoding.UTF8.GetString(file01));
                _httpComm.Cookies = _cookieContainers;
                lb_msg.Text       = "已存在Coolie";

                ControlBtDown(true);
                bt_spider.Enabled = true;
                return;
            }
            else
            {
                await Task.Run(() =>
                {
                    try
                    {
                        if (_driver != null)
                        {
                            _driver.Quit();
                            _driver.Dispose();
                            _driver = null;
                        }
                        _driver = PhantomJSDriverComm.Driver;
                        _driver.Navigate().GoToUrl(StaticResources.LOG_IN_URL);

                        Thread.Sleep(2000);
                        var signinSwitchPassword = _driver.FindElement(By.XPath("//span[@class='signin-switch-password']"));
                        signinSwitchPassword.Click();

                        Screenshot screen;

                        var account = _driver.FindElement(By.XPath("//input[@name='account']"));
                        //var accountHtml = account.GetAttribute("outerHTML");
                        account.SendKeys(tb_userName.Text.Trim());

                        var password = _driver.FindElement(By.XPath("//input[@name='password']"));
                        //var passwordHtml = password.GetAttribute("outerHTML");
                        password.SendKeys(tb_password.Text.Trim());

                        Thread.Sleep(2000);
                        screen = _driver.GetScreenshot();
                        // screen.SaveAsFile(StaticResources.TEMP_IMG_PATH);
                        var imgBts = screen.AsByteArray;
                        Invoke(new MethodInvoker(delegate()
                        {
                            using (var ms = new MemoryStream())
                            {
                                ms.Write(imgBts, 0, imgBts.Length);
                                var bitMap    = new Bitmap(ms);
                                pb_img.Width  = bitMap.Width;
                                pb_img.Height = bitMap.Height;
                                pb_img.Image  = bitMap;
                            }
                            // ContrlEnable(true);
                            ControlBtDown(true);
                            bt_spider.Enabled = true;
                        }));
                    }
                    catch (Exception ex)
                    {
                        Invoke(new MethodInvoker(delegate()
                        {
                            bt_spider.Enabled = true;
                            rtb_errorMsg.Text = ex.Message + "\r\n" + rtb_errorMsg.Text;
                        }));
                    }
                });
            }
        }
Exemplo n.º 2
0
 private void bt_saveCookie_Click(object sender, EventArgs e)
 {
     if (_driver == null)
     {
         lb_msg.Text = "不存在cookie";
         return;
     }
     try
     {
         CookieContainer cookieContainer = new CookieContainer();
         //获取cookies
         var cookies = _driver.Manage().Cookies.AllCookies;
         for (int i = 0; i < cookies.Count; i++)
         {
             var tempCookie = new System.Net.Cookie()
             {
                 Domain   = cookies[i].Domain,
                 Expires  = cookies[i].Expiry ?? DateTime.MaxValue,
                 HttpOnly = cookies[i].IsHttpOnly,
                 Name     = cookies[i].Name,
                 Path     = cookies[i].Path,
                 Secure   = cookies[i].Secure,
                 Value    = cookies[i].Value
             };
             _cookieContainers.Add(tempCookie);
             cookieContainer.Add(tempCookie);
         }
         FileComm.WriteFile(StaticResources.COOKIE_FILE_PATH, Encoding.UTF8.GetBytes(FormatterComm.Serialize(cookieContainer)));
         lb_msg.Text = "保存成功";
     }
     catch (Exception ex)
     {
         rtb_errorMsg.Text = ex.Message + "\r\n" + rtb_errorMsg.Text;
     }
 }