ubuntu中selenium+chromedriver+phantomjs的安装与使用

1、问题

在做爬虫时写了两个代码遇到这两个坑,运行代码时报有下面的错误:

第一个错误如下:

selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.

第一个错误对应的代码如下:

from selenium import webdriver
import time

# 实例化一个浏览器
driver = webdriver.Chrome()
# 发送请求
driver.get("http://www.baidu.com")

# 元素定位的方法, send_keys可以往一个input标签里输入内容
driver.find_element_by_id("kw").send_keys("python")

# 点击搜索
driver.find_element_by_id("su").click()

# 退出浏览器
time.sleep(3)
driver.quit()

第二个错误如下:

selenium.common.exceptions.WebDriverException: Message: 'phantomjs' executable needs to be in PATH.

第二个错误对应的代码如下:

from selenium import webdriver
import time

# 实例化一个浏览器
driver = webdriver.PhantomJS()

# 设置窗口大小
# driver.set_window_size(1920, 1080)

# 最大化窗口
driver.maximize_window()

# 发送请求
driver.get("http://www.baidu.com")

# 进行页面截屏
driver.save_screenshot("./baidu.png")

# 获取html字符串
print(driver.page_source)

# 获取当前url
print(driver.current_url)

# 获取cookie
cookies = driver.get_cookies()
print(cookies)
print("*"*30)
cookies = {i["name"]: i["value"] for i in cookies}
print(cookies)

# 退出浏览器
time.sleep(3)
driver.quit()

2、分析原因

对于第一个错误是因为可执行文件chromedriver没有添加到路径中,对于第二个错误也是因为可执行文件phantomjs没有添加到路径中,也就是说系统找不到可执行文件。

3、解决

1、问题一的解决。

1、安装selenium包(这个包本人是安装在虚拟环境下的),查看所装chrome浏览器的版本,在官网下载chromedriver,chrome与chromedriver的版本要一致。

pip install selenium
google-chrome --version

在这里插入图片描述
本人chrome浏览器的版本为77.0.3865,则进入其官网下载相应的chromedriver版本,选择相应的系统,我这里下载的linux系统。
在这里插入图片描述
在这里插入图片描述
2、找到chromedriver压缩文件的路径,解压文件,然后将解压后的文件移动到自己想要放置的路径下,我这里是移动到/opt路径下。

unzip chromedriver_linux64.zip
sudo mv ./chromedriver /opt

3、在程序中添加路径,修改程序如下:

from selenium import webdriver
import time

# 实例化一个浏览器,设置chromedriver存放路径
driver = webdriver.Chrome("/opt/chromedriver")

# 发送请求
driver.get("http://www.baidu.com")

# 元素定位的方法, send_keys可以往一个input标签里输入内容
driver.find_element_by_id("kw").send_keys("python")

# 点击搜索
driver.find_element_by_id("su").click()

# 退出浏览器
time.sleep(3)
driver.quit()

4、运行程序。
在这里插入图片描述
弹出浏览器,并自动搜索python,完美解决。

2、问题二的解决。

1、安装phantomjs包。

sudo apt install phantomjs

2、修改程序,运行程序。

from selenium import webdriver
import time


# 实例化一个浏览器,设置phantomjs存放路径
driver = webdriver.PhantomJS("/usr/bin/phantomjs")

# 设置窗口大小
# driver.set_window_size(1920, 1080)

# 最大化窗口
driver.maximize_window()

# 发送请求
driver.get("http://www.baidu.com")

# 进行页面截屏
driver.save_screenshot("./baidu.png")

# 获取html字符串
# print(driver.page_source)

# 获取当前url
# print(driver.current_url)

# 获取cookie
# cookies = driver.get_cookies()
# print(cookies)
# print("*"*30)
# cookies = {i["name"]: i["value"] for i in cookies}
# print(cookies)

# 退出浏览器
time.sleep(3)
driver.quit()

3、这个时候又报警告了, 意思是说selenium对phantomjs的支持已经被弃用,请改用chrome或firefox的无头版本。

UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead

4、经过一番百度发现,Chrome和Firefox相继推出了无头浏览器模式,phantomjs独领风骚的局面瞬间丧失。

5、如果还想用phantomjs的话,降低版本,如果不想使用,那就用Chrome和Firefox推出的无头浏览器模式,这里只讲述chrome的无头浏览模式,其用法与phantomjs一样的,firefox的大同小异,自行百度。

6、安装的包前面都已经安装过了,直接上程序了。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 导入配置chrome启动属性的类,这两种导入方法都可以
# chrome_options = Options()
chrome_options = webdriver.ChromeOptions()
# 添加启动参数,此处参数不能为空,headless就是设置无头浏览器模式,就是无界面浏览器模式
chrome_options.add_argument("headless")
# 禁止gpu加速
chrome_options.add_argument('disable-gpu')

# 实例化一个浏览器,设置chromedriver的存放路径,将设置的启动属性导入
driver = webdriver.Chrome("/opt/chromedriver", chrome_options=chrome_options)

# 设置窗口大小
# driver.set_window_size(1920, 1080)

# 最大化窗口
driver.maximize_window()

# 发送请求
driver.get("http://www.baidu.com")

# 设定页面加载时间
# driver.set_page_load_timeout(10)

# 进行页面截屏
driver.save_screenshot("./baidu.png")

# 获取html字符串
# print(driver.page_source)

# 获取当前url
# print(driver.current_url)

# 获取cookie
# cookies = driver.get_cookies()
# print(cookies)
# print("*"*30)
# cookies = {i["name"]: i["value"] for i in cookies}
# print(cookies)

# 退出浏览器
driver.quit()

在这里插入图片描述
到此,全部解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值