小編今天帶大家了解如何用C#+Selenium+ChromeDriver爬取網頁,文中知識點介紹的非常詳細。覺得有幫助的朋友可以跟著小編一起瀏覽文章的內容,希望能夠幫助更多想解決這個問題的朋友找到問題的答案,下面跟著小編一起深入學習“如何用C#+Selenium+ChromeDriver爬取網頁”的知識吧。
Selenium
是一個用于Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。而對于爬蟲來說,使用Selenium操控瀏覽器來爬取網上的數據那么肯定是爬蟲中的殺手武器。這里,我將介紹selenium + 谷歌瀏覽器的一般使用。
在平常的爬蟲開發中,有時候網頁是一堆js堆起來的代碼,涉及很多異步計算,如果是普通的http 控制臺請求,那么得到的源文件是一堆js ,需要自己在去組裝數據,很費力;但是采用Selenium
+ChromeDriver
可以達到所見即所得的完美效果。
項目結構:為了方便使用,用的winform
程序,附nuget包
以下是form1.cs的代碼,這里就只放關鍵方法代碼了。需要安裝最新的chrome瀏覽器+代碼中使用的chromedriver
是 v2.9.248315
#region 異常 退出chromedriver [DllImport("user32.dll", EntryPoint = "FindWindow")] private extern static IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("user32.dll", EntryPoint = "SendMessage")] public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); public const int SW_HIDE = 0; public const int SW_SHOW = 5; [DllImport("user32.dll", EntryPoint = "ShowWindow")] public static extern int ShowWindow(IntPtr hwnd, int nCmdShow); /// <summary> /// 獲取窗口句柄 /// </summary> /// <returns></returns> public IntPtr GetWindowHandle() { string name = (Environment.CurrentDirectory + "\\chromedriver.exe"); IntPtr hwd = FindWindow(null, name); return hwd; } /// <summary> /// 關閉chromedriver窗口 /// </summary> public void CloseWindow() { try { IntPtr hwd = GetWindowHandle(); SendMessage(hwd, 0x10, 0, 0); } catch { } } /// <summary> /// 退出chromedriver /// </summary> /// <param name="driver"></param> public void CloseChromeDriver(IWebDriver driver) { try { driver.Quit(); driver.Dispose(); } catch { } CloseWindow(); } #endregion 異常 退出chromedriver
效果:
說一下思路:
1.跳轉到指定的網頁driver.Navigate().GoToUrl
2.確定數據源,從driver.PageSource
讀取數據
3.對html數據進行解析
感謝大家的閱讀,以上就是“如何用C#+Selenium+ChromeDriver爬取網頁”的全部內容了,學會的朋友趕緊操作起來吧。相信億速云小編一定會給大家帶來更優質的文章。謝謝大家對億速云網站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。