selenium 浏览器常用设置和部署
2023-11-16 07:40:45
一,chrome浏览器设置
from selenium import webdriver # 浏览器选项 chrome_options = webdriver.ChromeOptions() # 使用headless无界面浏览器模式 chrome_options.add_argument('--headless') # 谷歌文档提到需要加上这个属性来规避bug chrome_options.add_argument('--disable-gpu') # 设置默认编码为utf-8 chrome_options.add_argument('lang=zh_CN.UTF-8') # 隐藏滚动条, 应对一些特殊页面 chrome_options.add_argument('--hide-scrollbars') # 禁止加载图片 chrome_options.add_argument('blink-settings=imagesEnabled=false') # 指定浏览器分辨率 chrome_options.add_argument('window-size=1440x900') # 设置默认请求头 chrome_options.add_argument('user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X)AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"') # 设置代理 desired_capabilities = chrome_options.to_capabilities() desired_capabilities['proxy'] = { "httpProxy":PROXY, "ftpProxy":PROXY, "sslProxy":PROXY, "noProxy":None, "proxyType":"MANUAL", "class":"org.openqa.selenium.Proxy", "autodetect":False } # 启动浏览器,获取网页源代码 driver = webdriver.Chrome(chrome_options=chrome_options) driver.get(url) # 显示页面源码 html = driver.page_source # 关闭当前页面 driver.close() # 退出浏览器 driver.quit()
二,Firefox浏览器设置
from selenium import webdriver # 浏览器选项 firefox_options = webdriver.FirefoxOptions() # 使用headless无界面浏览器模式 firefox_options.add_argument('--headless') # 谷歌文档提到需要加上这个属性来规避bug firefox_options.add_argument('--disable-gpu') # 设置默认编码为utf-8 firefox_options.add_argument('lang=zh_CN.UTF-8') # 隐藏滚动条, 应对一些特殊页面 firefox_options.add_argument('--hide-scrollbars') # 禁止加载图片 firefox_options.add_argument('blink-settings=imagesEnabled=false') # 指定浏览器分辨率 firefox_options.add_argument('window-size=1440x900') # driver.maximize_window() # 设置默认请求头 firefox_options.add_argument('user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X)AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"') # 设置代理 desired_capabilities = firefox_options.to_capabilities() desired_capabilities['proxy'] = { "httpProxy":PROXY, "ftpProxy":PROXY, "sslProxy":PROXY, "noProxy":None, "proxyType":"MANUAL", "class":"org.openqa.selenium.Proxy", "autodetect":False } # 启动浏览器,获取网页源代码 driver = webdriver.Firefox(firefox_options=firefox_options) driver.get(url) # 显示页面源码 html = driver.page_source # 关闭当前页面 driver.close() # 退出浏览器 driver.quit()
三,部署
1.centos7无桌面环境部署
环境要求:
CentOS 7 Firefox 56.0+ Selenium 3.5+ geckodriver 0.19+
Xvfb(X virtual framebuffer)是一个虚拟显示服务器,不需要显示设备也能模拟运行图形界面
安装 Xvfb:
yum install xorg-x11-server-Xvfb bzip gtk3
安装火狐浏览器
cd /usr/local wget https://ftp.mozilla.org/pub/firefox/releases/56.0.2/linux-x86_64/en-US/firefox-56.0.2.tar.bz2 tar -jxvf firefox-56.0.2.tar.bz2 ln -s /usr/local/firefox/firefox /usr/bin/firefox rm -rf firefox-56.0.2.tar.bz2
安装selenium
pip3 install selenium
安装Firefoxdriver
wget https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz tar -zxvf geckodriver-*.tar.gz ln -s /root/geckodriver /usr/bin/geckodriver # 最新版本下载 https://github.com/mozilla/geckodriver/releases
运行测试:
1.启动虚拟桌面坏境,保持后台运行。
Xvfb :1 -screen 0 1024x768x24 & :1是服务启动的端口号,可以任意设置,与下一步保持一致就行
2.配置环境变量
export DISPLAY=:1 端口号和上面一致,冒号不能漏
3.启动程序测试
from selenium import webdriver b = webdriver.Firefox(executable_path='/root/geckodriver') b.get('http://www.baidu.com') print(b.page_source) b.quit()
1.3最新chromedriver安装
phantomjs逐步淡出我们的实现,已经不再被支持,chrome集高并发的优点,且目前也已支持无头浏览器。
安装chrome
curl https://intoli.com/install-google-chrome.sh | bash
测试
google-chrome-stable --no-sandbox --headless --disable-gpu --screenshot https://www.suning.com/ # 在当前路径下生成一张截图。
下载最新版本的chromedriver,
https://sites.google.com/a/chromium.org/chromedriver/downloads
# 解压 $ unzip chromedriver_linux64.zip # 测试 $ ./chromedriver # 加入环境变量
引入虚拟界面(实际没有这样做)
from pyvirtualdisplay import Display display = Display(visible=0,size=(800,600)) display.start() driver = webdriver.Chrome() driver.get('http://www.baidu.com') print(driver.page_source)
实际环境中采用的写法,并成功了.
from selenium import webdriver chrome_options = webdriver.ChromeOptions() # 使用代理ip chrome_options.add_argument("--proxy-server=http://202.20.16.82:10152") # 使用headless无界面浏览器模式 chrome_options.add_argument('--headless') chrome_options.add_argument('--no-sandbox') # 谷歌文档提到需要加上这个属性来规避bug chrome_options.add_argument('--disable-gpu') # 禁止加载图片 chrome_options.add_argument('blink-settings=imagesEnabled=false') # 设置默认请求头 chrome_options.add_argument("user-agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'") wd = webdriver.Chrome(chrome_options=chrome_options,executable_path='/home/chrome/chromedriver') wd.get("https://www.163.com") content = wd.page_source.encode('utf-8') print(content) wd.quit()
最新文章
- Android学习第一天-adb常用命令
- 上线踩坑引发的处理方式---lsof,strace
- 第六章 - 图像变换 - 图像拉伸、收缩、扭曲、旋转[1] - 仿射变换(cvWarpAffine)
- 《项目经验》--后台一般处理程序向前台JS文件传递JSON,JS解析JSON,将数据显示在界面--显示在DropDownList 或 显示在动态创建的table中
- Delphi 的各版本定义,用于预编译参数中,避免忘记备忘之
- 【微网站开发】之微信内置浏览器API使用
- 小菜学习Lucene.Net(更新3.0.3版本使用)
- 今天工作中遇到的根据用户id取得产品大类和相关小类的问题
- poj3480--John
- eclipse中集成svn maven开发手册---导入项目
- TextField和TextView
- QC的使用简介
- 剑指Offer——好未来视频面知识点储备+面后总结
- 第一个vue示例-高仿微信
- Linux中以单容器部署Nginx+ASP.NET Core
- Linux 内存占用大排查
- 简析 __init__、__new__、__call__ 方法
- maven的安装和配置
- 屌丝也用按位与(&;),按位或(|) (二)
- PCM数据格式