精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

用C#+Selenium+ChromeDriver 爬取網頁,模擬真實的用戶瀏覽行為

開發 后端
Selenium是一個用于Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。而對于爬蟲來說,使用Selenium操控瀏覽器來爬取網上的數據那么肯定是爬蟲中的殺手武器。

[[381769]]

本文轉載自微信公眾號「UP技術控」,可以通過以下二維碼關注。轉載本文請聯系UP技術控公眾號。

背景

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

需求

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

實現方式

項目結構:為了方便使用,用的winform程序,附nuget包

 

以下是form1.cs的代碼,這里就只放關鍵方法代碼了。需要安裝最新的chrome瀏覽器+代碼中使用的chromedriver是 v2.9.248315

  1. private void crawlingWebFunc() 
  2.         { 
  3.             SetText("\r\n開始嘗試..."); 
  4.             List<testfold> surls = new List<testfold>(); 
  5.             string path = System.Environment.CurrentDirectory + "\\圖片url\\"
  6.             DirectoryInfo root = new DirectoryInfo(path); 
  7.             DirectoryInfo[] dics = root.GetDirectories(); 
  8.             foreach (var itemdic in dics) 
  9.             { 
  10.                 string txt = ""
  11.                 StreamReader sr = new StreamReader(itemdic.FullName + "\\data.txt"); 
  12.                 while (!sr.EndOfStream) 
  13.                 { 
  14.                     string str = sr.ReadLine(); 
  15.                     txt += str;// + "\n"
  16.                 } 
  17.                 sr.Close(); 
  18.                 surls.Add(new testfold() { key = itemdic.FullName, picurl = txt }); 
  19.             } 
  20.  
  21.             ChromeDriverService service = ChromeDriverService.CreateDefaultService(System.Environment.CurrentDirectory); 
  22.             //  service.HideCommandPromptWindow = true
  23.  
  24.             ChromeOptions options = new ChromeOptions(); 
  25.             options.AddArguments("--test-type""--ignore-certificate-errors"); 
  26.             options.AddArgument("enable-automation"); 
  27.             //   options.AddArgument("headless"); 
  28.             //  options.AddArguments("--proxy-server=http://user:password@yourProxyServer.com:8080"); 
  29.  
  30.             using (IWebDriver driver = new OpenQA.Selenium.Chrome.ChromeDriver(service, options, TimeSpan.FromSeconds(120))) 
  31.             { 
  32.                 driver.Url = "https://www.1688.com/"
  33.                 Thread.Sleep(200); 
  34.                 try 
  35.                 { 
  36.                     int a = 1; 
  37.                     foreach (var itemsurls in surls) 
  38.                     { 
  39.                         SetText("\r\n第" + a.ToString() + "個"); 
  40.                         driver.Navigate().GoToUrl(itemsurls.picurl); 
  41.                         //登錄 
  42.                         if (driver.Url.Contains("login.1688.com")) 
  43.                         { 
  44.                             SetText("\r\n需要登錄,開始嘗試..."); 
  45.                             trylogin(driver); //嘗試登錄完成 
  46.                                               //再試試 
  47.                             driver.Navigate().GoToUrl("https://s.1688.com/youyuan/index.htm?tab=imageSearch&imageType=oss&imageAddress=cbuimgsearch/eWXC7XHHPN1607529600000&spm="); 
  48.  
  49.                             if (driver.Url.Contains("login.1688.com")) 
  50.                             { 
  51.                                 //沒辦法退出 
  52.                                 SetText("\r\n退出,換ip重試..."); 
  53.                                 return
  54.                             } 
  55.                         } 
  56.  
  57.                         //鼠標放上去的內容因為頁面自帶只能顯示一個的原因 沒辦法做到全部顯示 然后在下載 只能是其他方式下載 
  58.                         //  var elements = document.getElementsByClassName('hover-container'); 
  59.                         //  Array.prototype.forEach.call(elements, function(element) { 
  60.                         //  element.style.display = "block"
  61.                         //   console.log(element); 
  62.                         //  }); 
  63.  
  64.                         //   IJavaScriptExecutor js = (IJavaScriptExecutor)driver; 
  65.  
  66.                         //    var sss = js.ExecuteScript(" var elements = document.getElementsByClassName('hover-container');  Array.prototype.forEach.call(elements, function(element) {  console.log(element); element.setAttribute(\"class\", \"測試title\");  element.style.display = \"block\";  console.log(element); });"); 
  67.  
  68.                         Thread.Sleep(500); 
  69.                         var responseModel = Write(itemsurls.key, driver.PageSource, Pagetypeenum.列表); 
  70.                         Thread.Sleep(500); 
  71.                         int i = 1; 
  72.                         foreach (var offer in responseModel?.data?.offerList ?? new List<OfferItemModel>()) 
  73.                         { 
  74.                             driver.Navigate().GoToUrl(offer.information.detailUrl); 
  75.                             string responseDatadetail = driver.PageSource; 
  76.                             Write(itemsurls.key, driver.PageSource, Pagetypeenum.詳情); 
  77.                             SetText("\r\n第" + a.ToString() + "-" + i.ToString() + "個"); 
  78.                             Thread.Sleep(500); 
  79.                             i++; 
  80.                         } 
  81.                     } 
  82.                 } 
  83.                 catch (Exception ex) 
  84.                 { 
  85.                     CloseChromeDriver(driver); 
  86.                     throw; 
  87.                 } 
  88.             } 
  89.         } 

  1. #region 異常  退出chromedriver 
  2.  
  3.         [DllImport("user32.dll", EntryPoint = "FindWindow")] 
  4.         private extern static IntPtr FindWindow(string lpClassName, string lpWindowName); 
  5.  
  6.         [DllImport("user32.dll", EntryPoint = "SendMessage")] 
  7.         public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); 
  8.  
  9.         public const int SW_HIDE = 0; 
  10.         public const int SW_SHOW = 5; 
  11.  
  12.         [DllImport("user32.dll", EntryPoint = "ShowWindow")] 
  13.         public static extern int ShowWindow(IntPtr hwnd, int nCmdShow); 
  14.  
  15.         /// <summary> 
  16.         /// 獲取窗口句柄 
  17.         /// </summary> 
  18.         /// <returns></returns
  19.         public IntPtr GetWindowHandle() 
  20.         { 
  21.             string name = (Environment.CurrentDirectory + "\\chromedriver.exe"); 
  22.             IntPtr hwd = FindWindow(nullname); 
  23.             return hwd; 
  24.         } 
  25.  
  26.         /// <summary> 
  27.         /// 關閉chromedriver窗口 
  28.         /// </summary> 
  29.         public void CloseWindow() 
  30.         { 
  31.             try 
  32.             { 
  33.                 IntPtr hwd = GetWindowHandle(); 
  34.                 SendMessage(hwd, 0x10, 0, 0); 
  35.             } 
  36.             catch { } 
  37.         } 
  38.  
  39.         /// <summary> 
  40.         /// 退出chromedriver 
  41.         /// </summary> 
  42.         /// <param name="driver"></param> 
  43.         public void CloseChromeDriver(IWebDriver driver) 
  44.         { 
  45.             try 
  46.             { 
  47.                 driver.Quit(); 
  48.                 driver.Dispose(); 
  49.             } 
  50.             catch { } 
  51.             CloseWindow(); 
  52.         } 
  53.  
  54.         #endregion 異常  退出chromedriver 

效果

 

總結

說一下思路:

1.跳轉到指定的網頁driver.Navigate().GoToUrl

2.確定數據源,從driver.PageSource讀取數據

3.對html數據進行解析

 

責任編輯:武曉燕 來源: UP技術控
相關推薦

2022-07-12 09:55:34

Selenium爬取數據

2021-11-24 17:22:06

網絡抓取網絡爬蟲數據收集

2023-05-19 07:43:11

2009-08-11 08:58:19

linux命令瀏覽網頁linux命令行參數linux命令行

2024-03-18 08:38:57

瀏覽器爬蟲直聘

2023-11-15 13:18:50

2009-06-24 17:39:07

TeamDefine

2015-04-01 14:14:38

Safari谷歌瀏覽器安全

2020-11-03 14:10:45

Python爬取天氣爬蟲

2019-01-02 12:23:30

Python金融數據爬取

2022-12-30 14:21:54

2011-11-15 08:53:52

用戶

2015-10-29 13:22:09

php數據分析爬蟲

2022-09-28 11:34:27

用戶行為數據業務

2013-07-15 15:47:35

App用戶行為

2024-10-08 10:44:32

2024-12-02 09:37:51

2017-11-08 10:05:17

2019-07-31 16:44:40

Python網絡爬蟲瀏覽器

2021-06-02 22:18:11

Python關鍵詞微博
點贊
收藏

51CTO技術棧公眾號

久久99久国产精品黄毛片色诱| 福利在线一区| 国产精品久久毛片av大全日韩| 国产在线一区二区三区| 日韩在线观看视频一区二区| 日韩精品一区国产| 国产夫妻在线| 99在线精品免费视频九九视| 亚洲伦理中文字幕| 亚洲一级片网站| 在线电影福利片| 91丝袜美腿高跟国产极品老师 | 91精品久久久久久久久| 亚洲波多野结衣| 久久porn| 欧美顶级少妇做爰| 国产精品久久中文字幕| 日本综合在线| 91丨porny丨最新| 国产热re99久久6国产精品| 久久久久久免费观看| 免费欧美激情| 日韩一二三四区| 日韩精品一区中文字幕| 日本大胆在线观看| 中文字幕电影一区| 好吊色欧美一区二区三区四区| 中文字幕av无码一区二区三区| 欧美日韩精品一本二本三本| 在线国产精品播放| 日本一区二区在线免费观看| 涩涩涩久久久成人精品| 亚洲乱码精品| 蜜臀91精品一区二区三区| 九九视频这里只有精品| xxxx日本黄色| 欧美三级午夜理伦三级在线观看| 欧美久久一区二区| 女人另类性混交zo| 交100部在线观看| 亚洲欧美经典视频| 性刺激综合网| 你懂的在线视频| 99久久免费国产| 91pron在线| 97caocao| 麻豆一区二区三区| 国产成人免费av| 成人毛片在线播放| 一区二区毛片| 亚洲2020天天堂在线观看| 波多野结衣亚洲一区二区| 欧美日一区二区| 亚洲人成五月天| 国产精品一级黄片| 欧美一区二区三区久久| 精品国产免费一区二区三区四区 | 蜜桃视频在线观看一区| 欧美一区二三区| 天天综合天天干| 99国产精品久久久久久久成人热| 久久久久久久久91| 国产在线拍揄自揄拍无码视频| 欧美激情91| 欧美成人久久久| 日韩在线视频免费观看高清中文 | 日本美女一区二区| 国产99在线|中文| 亚洲天堂视频网站| 久久婷婷一区| 国产精品一二三视频| 高潮无码精品色欲av午夜福利| 日本不卡一区二区三区| 国产精品亚洲第一区| 在线中文字幕网站| 国内外成人在线| 成人欧美一区二区三区黑人免费| 高h震动喷水双性1v1| www.在线欧美| 欧美一区1区三区3区公司| 黄色电影免费在线看| 国产欧美va欧美不卡在线| 天堂资源在线亚洲资源| 四虎久久免费| 亚洲乱码中文字幕| 91专区在线观看| 色婷婷综合久久久中字幕精品久久| 一本一道波多野结衣一区二区| 欧美 日韩 国产 激情| jizz久久久久久| 欧美一区二区三区色| www国产视频| 欧美在线观看视频一区| 久久综合国产精品台湾中文娱乐网| 中文字幕手机在线观看| 一本不卡影院| 国产精品美女免费视频| 99在线精品视频免费观看20| 成人av网站在线| 亚洲黄色av| 成人深夜福利| 乱码第一页成人| 国产精品偷伦免费视频观看的| 一二三四区在线| 91最新在线| 玖玖在线精品| 成人免费看吃奶视频网站| 性生交生活影碟片| 久久女同精品一区二区| 色乱码一区二区三区熟女| √8天堂资源地址中文在线| 在线观看成人免费视频| 午夜视频在线免费看| 国产精品三级| 久久免费视频在线| 中文在线观看av| 成人h动漫精品一区二| 亚洲成人精品电影在线观看| 密臀av在线| 欧美人狂配大交3d怪物一区 | 激情欧美一区二区| 久久99精品久久久久久青青日本| 超碰在线资源站| 国产综合在线播放| 中文字幕一区二区三区av| 免费国产a级片| 九色精品蝌蚪| 中文字幕亚洲一区二区三区| 精品成人av一区二区在线播放| 激情欧美一区二区| 欧美亚洲精品日韩| 精精国产xxxx视频在线播放| 日韩欧美中文字幕制服| 亚洲综合图片一区| 日韩精品成人一区二区在线| 好看的日韩精品视频在线| 国产成人l区| 欧美偷拍一区二区| 国产吞精囗交久久久| 在线精品亚洲| 91传媒免费看| 高潮毛片在线观看| 欧美日韩五月天| 日本污视频网站| 美女日韩在线中文字幕| 精品免费国产| zzzwww在线看片免费| 精品国产污污免费网站入口| 欧美成人精品欧美一级| 国产乱码精品一区二区三区五月婷 | 亚洲欧美在线一区二区| 亚洲 欧美 日韩 综合| 国产成人av资源| 99久久久精品视频| 视频精品二区| 欧美成人激情图片网| 国产av精国产传媒| 一区二区高清视频在线观看| 日韩精品在线播放视频| 欧美成人69av| 岛国视频一区免费观看| 黄色小说在线播放| 亚洲成成品网站| 日本一本高清视频| 91麻豆精东视频| 欧美日韩激情视频在线观看| 日韩欧美在线精品| 日韩美女中文字幕| 成人网视频在线观看| 欧美日韩视频在线观看一区二区三区| 色欲狠狠躁天天躁无码中文字幕 | 亚洲色大成网站www久久九九| 久久久精品高清| 一本到12不卡视频在线dvd| 97久久人人超碰caoprom欧美| 青春草免费在线视频| 亚洲第一av在线| 青青视频在线免费观看| 国产精品萝li| 无码人妻丰满熟妇区毛片蜜桃精品| 国语精品一区| 欧美成人dvd在线视频| 成人h在线观看| 久久国内精品一国内精品| 亚洲AV午夜精品| 欧美日韩中文字幕综合视频 | 午夜精品久久久久久久96蜜桃| 亚洲综合色丁香婷婷六月图片| 黄色网址在线视频| 日韩电影免费一区| avove在线观看| 色婷婷av一区二区三区丝袜美腿| 国产精品久久久久久久av电影| 日本www在线观看| 精品久久国产字幕高潮| 欧美一区二区三区网站| 亚洲欧洲av一区二区三区久久| 美女流白浆视频| 老鸭窝毛片一区二区三区| 中文字幕一区二区三区有限公司| 盗摄系列偷拍视频精品tp| 国产91九色视频| 亚洲性图自拍| 亚洲人成亚洲人成在线观看| wwwav在线播放| 色香蕉成人二区免费| 男的操女的网站| 久久影院午夜论| 在线播放黄色av| 久久资源在线| 波多野结衣av一区二区全免费观看| 国产精品欧美三级在线观看| 岛国一区二区三区高清视频| 成人亚洲免费| 欧美在线激情视频| 天天色天天射天天综合网| 欲色天天网综合久久| 黄频在线免费观看| 91 com成人网| 国产成人麻豆免费观看| 亚洲电影一区二区| 日韩在线一卡二卡| 久久久99免费| 国产chinese中国hdxxxx| 久久电影网电视剧免费观看| 黄色一级一级片| 亚洲精品影视| 草草草视频在线观看| 成人羞羞网站入口| 欧美一区二区福利| 日韩中出av| 国产精品日韩欧美一区二区| 亚洲日本免费电影| 国产精品欧美一区二区| 日本乱码一区二区三区不卡| 欧美精品xxx| 91一区二区三区在线| 中文字幕在线日韩| 九九热视频在线观看| 亚洲精品国产电影| 免费观看黄色一级视频| 日韩一区二区电影| 国产一区二区三区四区视频| 在线视频你懂得一区| 毛片毛片女人毛片毛片| 亚洲成人在线免费| 18精品爽视频在线观看| 亚洲精品视频在线| 午夜国产福利一区二区| ㊣最新国产の精品bt伙计久久| 国产视频不卡在线| 中文字幕国产一区二区| 免费看黄色三级| 日本一区二区三级电影在线观看 | 中文字幕欧美国产| 国产美女永久免费无遮挡| 久久综合一区二区| 国产三级av在线播放| 亚洲国产经典视频| 国产日韩精品中文字无码| 中文字幕一区二区三区四区 | 日韩一级毛片| 91香蕉视频网址| 综合激情视频| 成人免费性视频| 国产日韩亚洲欧美精品| 日韩欧美xxxx| 捆绑变态av一区二区三区| 九九九九九伊人| 国产.欧美.日韩| 一区二区三区少妇| 国产视频一区二区在线| 91香蕉视频污在线观看| 亚洲欧美日韩电影| 久久精品视频国产| 91极品视觉盛宴| 97国产成人无码精品久久久| 欧美一区二区三区免费| 人妻中文字幕一区| 亚洲免费视频观看| 生活片a∨在线观看| 九九热r在线视频精品| 国产污视频在线播放| 国产精品入口福利| 一区二区精彩视频| 欧美一区二区三区四区五区六区 | 久久综合久久网| 巨乳诱惑日韩免费av| 久久这里只精品| 国产一区二区在线影院| 国产高清成人久久| 久久亚洲二区三区| 手机在线中文字幕| 亚洲午夜视频在线| 自拍偷拍18p| 56国语精品自产拍在线观看| 波多野结衣视频观看| 欧美岛国在线观看| 欧美孕妇孕交| 欧美日韩999| 热三久草你在线| 国产精品日韩在线播放| 久久国产精品免费精品3p| 欧美日产一区二区三区在线观看| 成人区精品一区二区婷婷| 日韩一级片一区二区| 久久婷婷一区| 古装做爰无遮挡三级聊斋艳谭| 高清shemale亚洲人妖| 成人乱码一区二区三区av| 日韩毛片在线免费观看| 中文字幕在线观看视频免费| 欧美一级理论片| 九色在线观看| 97超级碰碰碰久久久| 欧美aaa级| av激情久久| 天天射天天综合网| 欧美日韩精品在线一区二区| 国产麻豆视频精品| 熟女高潮一区二区三区| 亚洲精品中文字幕在线观看| 中文字幕乱码人妻二区三区| 精品乱人伦小说| 91在线观看| 日韩av电影中文字幕| 一区三区自拍| 日本一区二区三区四区五区六区| 国产精品一页| 超碰中文字幕在线观看| 国产精品久久久久影院老司| 亚洲精品午夜国产va久久成人| 欧美一级电影网站| 日本中文字幕视频在线| 日本在线观看天堂男亚洲| 啪啪国产精品| 亚洲色婷婷久久精品av蜜桃| 免费在线欧美视频| 老头老太做爰xxx视频| 午夜精品久久久久久久久久| 国产视频在线免费观看| 在线电影欧美日韩一区二区私密| 成人在线高清免费| 成人片在线免费看| 亚洲激情中文在线| 青青青在线播放| 99久久99久久精品免费看蜜桃| 校园春色 亚洲| 欧美日韩大陆一区二区| 黄色av网站在线免费观看| 久久久视频精品| 国产精品一区二区三区美女| 日本a级片在线观看| 国产成人免费视频一区| 内射一区二区三区| 欧美日韩1234| 黄色免费在线观看网站| 国产精品美女网站| 国内黄色精品| 又色又爽又高潮免费视频国产| 91网站最新网址| 日批视频免费在线观看| 亚洲欧美日韩精品久久奇米色影视| 第一av在线| 国产偷久久久精品专区| 狠狠入ady亚洲精品| av网站有哪些| 欧美性开放视频| 婷婷成人激情| 国产一区视频在线播放| 国产精品久久久久久久| 免费看的av网站| 亚洲午夜免费电影| 精品无码国产污污污免费网站| 欧美一区二区三| 亚洲综合欧美激情| 综合欧美亚洲日本| 一级黄色片在线| 欧美激情亚洲自拍| 久久影院资源站| 尤蜜粉嫩av国产一区二区三区| 久久久99精品久久| aaa级黄色片| 久久久免费高清电视剧观看| 日韩中文字幕在线一区| 国产乱子伦农村叉叉叉| 久久久天堂av| 99热这里只有精| 久久久久久com| 精品午夜久久| 色男人天堂av| 依依成人精品视频| 久久精品国产亚洲a∨麻豆| 国产精品成人av性教育| 欧美片第1页综合| 精品夜夜澡人妻无码av | 自拍偷拍亚洲区| 涩涩屋成人免费视频软件| 日韩xxxx视频| 久久久夜色精品亚洲|