前言

Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。他能支持主流编程语言,以及拥有多种浏览器驱动。
用C#写爬虫确实是不方便,网上的资料也相对较少,但懒得配python的环境,所以选用了C#。本文用C#做了一些爬虫抓取的尝试,包括登录、抓取信息,筛选信息。Selenium的用法都是相同的,基础的操作用什么语言来写没什么差别,操作方法与逻辑也都可以在别的语言直接实现。
原理与逻辑:通过代码指令,识别分析前端语言并代替人手动操作如点击、输入、选择等操作,相比于人手更加的具有复用性,准确性。常用于定时签到(抢票类),以及大量的数据选取等操作。

环境与配置

选用Winform框架,配置Driver驱动:

引用(自动添加即可):

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.PhantomJS;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Windows.Forms;

chromedriver版本驱动安装
先Chrome检查版本号

并于http://chromedriver.storage.googleapis.com/index.html
下载对应版本驱动,添加下环境变量,安装位置在下述代码中用于启动驱动。

代码块示例

public void GetHtml(string url){PhantomJSDriverService driverService = PhantomJSDriverService.CreateDefaultService();driverService.IgnoreSslErrors = true;ChromeOptions options = new ChromeOptions();options.AddArgument("--headless");options.AddArgument("--nogpu");//options.AddArguments(profile_directory);List<String> tagNmaeList = new List<string>();using (driver = new ChromeDriver(@"C:\Users\Downloads", options, TimeSpan.FromSeconds(120)))//启动驱动{//Login(driver);try{driver.Manage().Window.Maximize();driver.Navigate().GoToUrl(url);Thread.Sleep(5000);string js1 = "login-qrcode__title__right";string js2 = "js-tab-password-login";string js3 = "js-login-btn";//点击按钮driver.FindElementByClassName(js1).Click();driver.FindElementByClassName(js2).Click();driver.FindElementsByClassName("zent-checkbox")[0].Click();//对勾选框的选择driver.FindElementsByClassName("zent-checkbox")[1].Click();//输入账号密码driver.FindElementByClassName("zent-input").SendKeys("10001");driver.FindElementByName("password").SendKeys("1234567");Thread.Sleep(200);driver.GetScreenshot().SaveAsFile("C:\\Users\\Desktop\\WebScreen.PNG",System.Drawing.Imaging.ImageFormat.Png);driver.FindElementByClassName(js3).Click();Thread.Sleep(200);//线程等待载入Console.WriteLine(driver.PageSource); //输出网页源码System.IO.File.WriteAllText(@"C:\Users\Desktop\WriteLines.txt", driver.PageSource);//输出到txt}catch (NoSuchElementException){Console.WriteLine("找不到该元素"); ;}}}}

各项动作功能介绍

1.通过元素识别
1.1通过类名识别,并点击:

driver.FindElementByClassName(str).Click();

如果是多项同名类,我们可以按序号来抓取到:

driver.FindElementsByClassName(str)[0].Click();
//注意差别

1.2通过其他方式识别,如id等,如下:

2.识别元素后的操作
2.1密码块输入示例:

driver.FindElementByName("password").SendKeys("1234567");

2.2其他操作:
例如通过text抓取信息等

3.抓取页面信息
截取信息块PageSource输出:

System.IO.File.WriteAllText(@"C:\Users\Desktop\WriteLines.txt", driver.PageSource);//输出到txt

截图检查网页情况:

driver.GetScreenshot().SaveAsFile("C:\\Users\\Desktop\\WebScreen.PNG",System.Drawing.Imaging.ImageFormat.Png);

截取到的登录页面示例如下:

如此,便可以让驱动开始进行点击、输入等交互动作,从而完成页面跳转、登录,初步的抓取。抓取结果其实就是你在网页检查中看到的源代码,你需要获取的信息会夹在源代码中。

注意事项

1.url与类名的准确性,这个不用多说。
2.驱动的版本对应问题:
如果有这种问题,说明驱动版本号不对应,去Chrome检查版本号,按前文说明重新安装一下。

3.登录问题
登录过程中可能有其他的反爬机制,例如验证码与人机验证框,可以通过cookie跳过登录过程,这个以后再更新。

C#-Selenium爬虫抓取(一)相关推荐

  1. python爬虫实战(四):selenium爬虫抓取阿里巴巴采购批发商品

    一.前言 本编教程是通过selenium爬取阿里巴巴采购批发网址的商品数据信息,并保存到mongo.为什么用selenium呢,是因为网站大多数不再是静态网站,而是有诸如Ajax请求的动态网站,如果接 ...

  2. 使用selenium爬虫抓取数据

    文章目录 总体介绍 Selenium 安装 安装火狐浏览器插件Katalon Recorder 后台运行 简单教程 抓取网易房地产数据例子 参考链接 总体介绍 Selenium 简单入门教程 使用 S ...

  3. idea+selenium代码_你试过使用selenium爬虫抓取数据吗

    ▼ 关注测试局| 会上瘾 写在前面 本来这篇文章该几个月前写的,后来忙着忙着就给忘记了. ps:事多有时候反倒会耽误事. 几个月前,记得群里一朋友说想用selenium去爬数据,关于爬数据,一般是模拟 ...

  4. 【爬虫】selenium+webdrive抓取淘宝商品评价

    [爬虫]selenium+webdrive抓取淘宝商品评价 爬虫小白入门 (声明:本人只是处于突如其来的兴趣学习一点点,水平实在不高,但在这个过程中也或多或少地解决了一些问题,所以对同为小白的朋友们或 ...

  5. python爬虫抓取网站技巧总结

    不知道为啥要说是黑幕了??哈哈哈-..以后再理解吧 python爬虫抓取网站的一些总结技巧 学用python也有3个多月了,用得最多的还是各类爬虫脚本:写过抓代理本机验证的脚本,写过在discuz论坛 ...

  6. python爬取百度贴吧中的所有邮箱_使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号...

    原标题:使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号 不知道大家过年都是怎么过的,反正栏主是在家睡了一天,醒来的时候登QQ发现有人找我要一份贴吧爬虫的源代码,想起之前练手的时候写过一个抓 ...

  7. 爬虫抓取页面数据原理(php爬虫框架有很多 )

    爬虫抓取页面数据原理(php爬虫框架有很多 ) 一.总结 1.php爬虫框架有很多,包括很多傻瓜式的软件 2.照以前写过java爬虫的例子来看,真的非常简单,就是一个获取网页数据的类或者方法(这里的话 ...

  8. scrapy和selenium结合抓取动态网页

    1.安装python (我用的是2.7版本的) 2.安装scrapy:   详情请参考 http://blog.csdn.net/wukaibo1986/article/details/8167590 ...

  9. python爬取大众点评评论_python爬虫抓取数据 小试Python——爬虫抓取大众点评上的数据 - 电脑常识 - 服务器之家...

    python爬虫抓取数据 小试Python--爬虫抓取大众点评上的数据 发布时间:2017-04-07

最新文章

  1. java代码启动电脑上程序方法
  2. python调整数组顺序使奇数位于偶数前面
  3. 个人图书管理系统c语言代码,c语言源代码---------------个人图书管理系统
  4. linux shell函数
  5. 风险平价策略python代码_风险平价组合(risk parity)理论与实践
  6. jquery+ajax 实现text框模糊搜索并可利用listbox实时显示模糊搜索列表结果
  7. Charm Bracelet(信息学奥赛一本通-T1294)
  8. PyTorch 模型训练实用教程(附代码)
  9. chart控件做实时曲线显示_Spark+Kafka+WebSocket+eCharts实时分析-完全记录(5)
  10. 翻译连载 | 附录 C:函数式编程函数库-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
  11. UltraEdit键盘快捷键
  12. Mac如何解决vi vim光标移动慢问题
  13. 期末复习-选择题整理(湖南大学操作系统课程雨课堂答案即期末题库)
  14. 谷歌翻译软件-免费谷歌翻译
  15. 关于微信第三方服务消息提醒
  16. 阿里飞猪个性化推荐:召回篇
  17. swper实现分页器样式修改
  18. 《追寻生命的意义》摘抄
  19. 手动计算Q-Learning的一个实例
  20. 非对称加密(RSA)详解

热门文章

  1. 【黎乙丙】平面设计工具知识,PS中的基础原理之图像选区的创建与编辑
  2. SETAM购买“战地5”为什么无法启动游戏
  3. Eureka服务注册与发现--入门
  4. 初识Spring框架
  5. 冲压模具设计浅谈IC端子模具
  6. 印度最强输出是什么?CEO!印度裔统治下的美国巨头
  7. 逆向wireshark学习SSL协议算法(转)
  8. windows 10关闭粘滞键
  9. 【面试频道】笔面智力题
  10. EXPLAIN PLAN FOR