Selenium是一个用于浏览器自动化测试框架,常被用于模拟真实用户使用浏览器对Web应用程序进行测试。
Selenium 可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏。因此也经常用于爬虫领域。爬虫中使用Selenium是为了解决 requests 无法直接执行 JavaScript 代码的问题。通过驱动浏览器,模拟浏览器的真实操作,如跳转、输入、点击、下拉等,拿到JS代码渲染之后的结果。从而获取网页上需要的数据。
Selenium 提供了Python 的第三方库,对外提供的接口能够操作浏览器,从而让浏览器完成自动化的操作。
Selenium 自己不带浏览器,需要与浏览器结合在一起才能使用。
Selenium库的安装
在电脑上安装好Python后,在CMD命令提示符下,用pip命令进行安装(我使用的是Python 3.12.0,已提前安装好。IDE为PyCharm 2023.3.2 Community)
请提前将安装源更换为国内镜像源,我使用的是清华源。
pip install selenium == 4.2.0
安装完成后,在Pycharm就可以使用selenium库来写我们自己的爬虫代码啦!
现在大部分网站都做了反爬检测,因此,需要绕过网站的反爬机制。我们采取浏览器无头模型进行。
无头模式具有以下优点
速度与性能
由于无需加载可视化界面,Headless模式下的测试速度通常比普通模式更快。
隐秘性与稳定性
无头模式下不会弹出可见的浏览器窗口,可以在后台静默运行,不影响用户体验。
节省资源
在一些资源受限的环境中,如Linux环境下,使用无头模式可以节省系统资源,提高性能和稳定性
以下是我自己写的测试代码,使用的是Microsoft Edge浏览器,浏览器版本:126.0.2592.81 (正式版本) (64 位)
使用谷歌Chrome浏览器的话,代码如下:
Chrome和Edge在设置options参数时,略有不同。Edge的参数是不用写 “--”的,而Chrome是需要的。另外一点,Chrome的optons参数在设置 headless时,添加了==news参数。Chrome版本126.0.6478.127(正式版本)(64 位) 测试通过。
我未安装Firefox,故FireFox未测试
以上代码,在Pycharm 2023.3.2 以及 Vscode中测试通过。
欢迎各位大佬的批评指导。