SimpleBrowser浏览器引擎
SimpleBrowser是专门为自动化任务而设计的一个灵活而直观的浏览器引擎,内置
。示例代码:
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 = "youremail@domain.com"; 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; } }
评论
WebKitWeb 浏览器引擎
WebKit是一个跨平台的Web浏览器引擎,苹果的Safari、谷歌的Chrome浏览器都是基于这个框架来开发的。WebKit还支持移动设备和手机,包括iPhone和Android手机都是使用WebK
WebKitWeb 浏览器引擎
0
Chromium浏览器引擎
Chromium是Google的Chrome浏览器背后的引擎,其目的是为了创建一个安全、稳定和快速的通用浏览器。Chromium是一个由Google主导开发的网页浏览器,以BSD许可证等多重自由版权发
Chromium浏览器引擎
0
ServoMozilla 的浏览器引擎
Servo是一个Web浏览器引擎的原型,使用Rust语言开发,当前基于OSX和Linux开发。Servo浏览器引擎的目标是为开发者提供最大的灵活性。为了实现这个目的,它必须提供稳定的API和ABI。它
ServoMozilla 的浏览器引擎
0