目录
前言
提示:爬虫本身并不违法,所有爬虫都应遵守Robots协议,虽然Robots协议并不是强制性要求,但由此可能引发法律纠纷等问题。
如非必要,我们在使用爬虫过程中,也应该尽量避免大量,快速反复请求网站,造成网站资源占用,甚至造成网站服务器的宕机,请文明使用爬虫;
需要了解更多Robots协议详情请参考:
Robots协议想要查看网站Robots协议,可以在网站域名后添加/robots.txt;例如CSDN的Robots协议就是:https://www.csdn.net/robots.txt
一、Selenium简介
- Selenium开始并不是用于爬虫,而是一款自动化测试工具,它可以直接运行在浏览器中,模拟用户操作,支持的浏览器包括IE(7, 8, 9, 10, 11),Firefox,Safari,Google Chrome,Opera,Edge等。
- 这个工具的主要功能包括:测试与浏览器的兼容性(测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上)。测试系统功能(创建回归测试检验软件功能和用户需求)。
- 支持自动录制动作和自动生成.Net、Java、Perl等不同语言的测试脚本。
二、浏览器驱动
1.浏览器驱动参考
浏览器 | 支持的操作系统 | 维护者 | 下载 | 问题追溯 |
---|---|---|---|---|
Chromium/Chrome | Windows/macOS/Linux | 下载 | Issues | |
Firefox | Windows/macOS/Linux | Mozilla | 下载 | Issues |
Edge | Windows/macOS | Microsoft | 下载 | Issues |
Internet Windows | Windows/macOS/Linux | Selenium Project | 下载 | Issues |
Safari | macOS | High Sierra and newer Apple | 内置 | Issues |
注意: Opera驱动程序不支持w3c语法, 因此我们建议使用chromedriver来处理Opera. 请参见Opera浏览器的代码示例
下载版本以自己安装的浏览器版本为主,我这里以 Windows10 Chrome 103.0.5060.134为例
2.Windows下载Chrome驱动
三、代码实现
1.新建控制台项目WeatherWebCrawler
2.选择.NET 6.0
.NET 6.0和.NET Core 3.1最大区别是Program.cs中Main函数的取消,该代码在NET Core 3.1中也可使用
3.安装NuGet包
命令:Install-Package Selenium.WebDriver -Version 4.3.0
4.将下载好的驱动放到项目生成目录下
没有目录的把项目生成下就有了,注意不是项目根目录,而是项目生成的目录下;
或者知道自己放在哪个目录,代码中driverServicePath改成文件夹路径也行,路径只到文件夹,不要包含驱动文件
5.编写代码
网站地址
首先拿到页面的url,根据需求选择想要城市的url,当前也可以拿到全部城市,用xml或者配置文件可动态选择,这里就不过多展开,等有时间后面会单独出一篇文章详解,代码中是以我当前所在地为例。
①选择自己的需求城市
②选择七天
③复制网站地址
代码实现打开浏览器,并进入网站
using OpenQA.Selenium.Chrome;
//驱动路径(注意不要包含驱动文件)
string driverServicePath = Path.Combine(Directory.GetCurrentDirectory(), "chromedriver_win32");
//创建驱动服务
ChromeDriverService service = ChromeDriverService.CreateDefaultService(driverServicePath);
//实例化浏览器驱动
ChromeDriver driver = new ChromeDriver(service);
//页面地址
string url = "http://www.weather.com.cn/weather/101280601.shtml";
//打开页面
driver.Navigate().