Selenium是一个自动化测试工具,可以模拟用户操作浏览器的行为,故也可以用于对一些需要执行JS脚本的网站的爬虫的开发
一、Linux(Centos)下命令行环境的搭建
1.1 Xvfb的安装
由于命令行下没有图形界面,这样就需要一个虚拟的后台运行的桌面Xvfb来欺骗浏览器使其得以正常运行
yum install Xvfb
1.2 后台启动Xvfb并指定DISPLAY的值
Xvfb -ac :110 -screen 0 1280x1024x8 &
export DISPLAY=:110这样启动的浏览器就会在虚拟的桌面:110运行
二、ChromeDriver的使用
2.1 指定ChromeDriver文件路径
Windows :
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver.exe");
Linux :
System.setProperty("webdriver.chrome.driver", "/path/to/google-chrome");
chromium :
System.setProperty("webdriver.chrome.driver", "/path/to/chromium-browser");
2.2 使用ChromeDriver开发注意事项
2.2.1 尽量selenium和chrome都用最新版的,也可以根据chromedriver支持的版本安装相应版本的chrome 2.2.2 linux下root用户不能直接启动chrome,需要指定用户设置保存的目录
命令行启动:
chromium-browser --user-data-dir=/pa/admin/to/dir https://www.google.cn
JAVA:
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");
WebDriver driver = new ChromeDriver(options);
2.2.3 因为是一个Webdriver对应一个浏览器进程,所以多标签操作不太可行
ChromeDriver下载地址(需要科学上网): http://chromedriver.storage.googleapis.com/index.html
三、FirefoxDriver的使用
3.1 在Linux下不能多标签操作,每次都是新开一个浏览器,会导致浏览器进程较多,需要频繁开关
原因是在selenium-firefox-driver-2.53.1.jar里面的webdriver_prefs.json文件硬编码了
对应的java类是FirefoxProfile,其中硬编码了一些不希望我们去更改的值
四、Selenium的性能优化思路
4.1 关闭浏览器的图片功能
4.1.1 phantomsJS : --load-images=false ,在linux下有bug,这样设置的话会导致内存不断增加,最后挂掉
4.2 打开浏览器的本地缓存
4.2.1 phantomJS : --disk-cache=true
转载请注明原文地址: https://ju.6miu.com/read-1299676.html