<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          SimpleBrowser瀏覽器引擎

          聯(lián)合創(chuàng)作 · 2023-09-30 17:32

          SimpleBrowser是專門為自動(dòng)化任務(wù)而設(shè)計(jì)的一個(gè)靈活而直觀的瀏覽器引擎,內(nèi)置.Net 4 framework。

          示例代碼:

          class Program
          {
              static void Main(string[] args)
              {
                  var browser = new Browser();
                  try
                  {
                      // log the browser request/response data to files so we can interrogate them in case of an issue with our scraping
                      browser.RequestLogged += OnBrowserRequestLogged;
                      browser.MessageLogged += new Action<Browser, string>(OnBrowserMessageLogged);
          
                      // we'll fake the user agent for websites that alter their content for unrecognised browsers
                      browser.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10";
          
                      // browse to GitHub
                      browser.Navigate("http://github.com/");
                      if(LastRequestFailed(browser)) return; // always check the last request in case the page failed to load
          
                      // click the login link and click it
                      browser.Log("First we need to log in, so browse to the login page, fill in the login details and submit the form.");
                      var loginLink = browser.Find("a", FindBy.Text, "Login");
                      if(!loginLink.Exists)
                          browser.Log("Can't find the login link! Perhaps the site is down for maintenance?");
                      else
                      {
                          loginLink.Click();
                          if(LastRequestFailed(browser)) return;
          
                          // fill in the form and click the login button - the fields are easy to locate because they have ID attributes
                          browser.Find("login_field").Value = "[email protected]";
                          browser.Find("password").Value = "yourpassword";
                          browser.Find(ElementType.Button, "name", "commit").Click();
                          if(LastRequestFailed(browser)) return;
          
                          // see if the login succeeded - ContainsText() is very forgiving, so don't worry about whitespace, casing, html tags separating the text, etc.
                          if(browser.ContainsText("Incorrect login or password"))
                          {
                              browser.Log("Login failed!", LogMessageType.Error);
                          }
                          else
                          {
                              // After logging in, we should check that the page contains elements that we recognise
                              if(!browser.ContainsText("Your Repositories"))
                                  browser.Log("There wasn't the usual login failure message, but the text we normally expect isn't present on the page");
                              else
                              {
                                  browser.Log("Your News Feed:");
                                  // we can use simple jquery selectors, though advanced selectors are yet to be implemented
                                  foreach(var item in browser.Select("div.news .title"))
                                      browser.Log("* " + item.Value);
                              }
                          }
                      }
                  }
                  catch(Exception ex)
                  {
                      browser.Log(ex.Message, LogMessageType.Error);
                      browser.Log(ex.StackTrace, LogMessageType.StackTrace);
                  }
                  finally
                  {
                      var path = WriteFile("log-" + DateTime.UtcNow.Ticks + ".html", browser.RenderHtmlLogFile("SimpleBrowser Sample - Request Log"));
                      Process.Start(path);
                  }
              }
          
              static bool LastRequestFailed(Browser browser)
              {
                  if(browser.LastWebException != null)
                  {
                      browser.Log("There was an error loading the page: " + browser.LastWebException.Message);
                      return true;
                  }
                  return false;
              }
          
              static void OnBrowserMessageLogged(Browser browser, string log)
              {
                  Console.WriteLine(log);
              }
          
              static void OnBrowserRequestLogged(Browser req, HttpRequestLog log)
              {
                  Console.WriteLine(" -> " + log.Method + " request to " + log.Url);
                  Console.WriteLine(" <- Response status code: " + log.ResponseCode);
              }
          
              static string WriteFile(string filename, string text)
              {
                  var dir = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Logs"));
                  if(!dir.Exists) dir.Create();
                  var path = Path.Combine(dir.FullName, filename);
                  File.WriteAllText(path, text);
                  return path;
              }
          }
          瀏覽 26
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  内射网站| 欧美视频第五页 | 亚洲国产欧美手机在线 | 黄片在线免费观看免播放器 | 国产7区 国产网址 |