最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用C#+Selenium+ChromeDriver爬取網(wǎng)頁(模擬真實的用戶瀏覽行為)

 更新時間:2022年01月25日 17:31:25   作者:DotNetCore實戰(zhàn)  
這篇文章主要介紹了用C#+Selenium+ChromeDriver爬取網(wǎng)頁,模擬真實的用戶瀏覽行為,需要的小伙伴可以參考一下

以下文章來源于公眾號:DotNetCore實戰(zhàn)

1.背景

 Selenium是一個用于Web應(yīng)用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。而對于爬蟲來說,使用Selenium操控瀏覽器來爬取網(wǎng)上的數(shù)據(jù)那么肯定是爬蟲中的殺手武器。這里,我將介紹selenium + 谷歌瀏覽器的一般使用。

2.需求

在平常的爬蟲開發(fā)中,有時候網(wǎng)頁是一堆js堆起來的代碼,涉及很多異步計算,如果是普通的http 控制臺請求,那么得到的源文件是一堆js ,需要自己在去組裝數(shù)據(jù),很費力;但是采用Selenium+ChromeDriver可以達到所見即所得的完美效果。

3.實現(xiàn)方式

項目結(jié)構(gòu):為了方便使用,用的winform程序,附nuget包

 以下是form1.cs的代碼,這里就只放關(guān)鍵方法代碼了。需要安裝最新的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>
? ? ? ? /// 關(guān)閉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.跳轉(zhuǎn)到指定的網(wǎng)頁driver.Navigate().GoToUrl
  • 2.確定數(shù)據(jù)源,從driver.PageSource讀取數(shù)據(jù)
  • 3.對html數(shù)據(jù)進行解析

到此這篇關(guān)于用C#+Selenium+ChromeDriver爬取網(wǎng)頁(模擬真實的用戶瀏覽行為)的文章就介紹到這了,更多相關(guān)用C#+Selenium+ChromeDriver 爬取網(wǎng)頁內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

都江堰市| 郧西县| 青海省| 扶绥县| 昭觉县| 巴马| 青铜峡市| 博客| 竹山县| 九江市| 安远县| 迁西县| 通州市| 苍溪县| 万州区| 民和| 南乐县| 安庆市| 彰化县| 连城县| 晴隆县| 桦川县| 崇文区| 灵川县| 湘西| 汉中市| 阿拉善盟| 克什克腾旗| 专栏| 资源县| 柳州市| 遂宁市| 海门市| 尉犁县| 凉山| 孟连| 神木县| 拉孜县| 合江县| 汉寿县| 土默特右旗|