1. 安装虚拟屏幕
我的树莓派系统是 buster lite 版,没有界面,所以先要安装 xvfb
sudo apt install xvfb
2. 安装 firefox
sudo apt install firefox-esr
firefox-esr -v # 安装完可以检测一下版本
# Mozilla Firefox 68.7.0esr
3. 安装 geckodriver
下载安装 geckodriver-v0.23.0-arm7hf 版的。
- v0.24.0以后不发布arm7hf平台了,需要自己编译。
- 好在v0.23.0也可以支持较新版本的 Firefox。
# 下载
aria2c -c https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-arm7hf.tar.gz
# 解压
tar -xf geckodriver-v0.23.0-arm7hf.tar.gz
# 修改权限
sudo chmod a+x geckodriver
# 移到 path下
sudo mv geckodriver /usr/local/bin/
ref: https://github.com/mozilla/geckodriver/releases
4. 安装 selenium, pyvirtualdisplay
pip3 install selenium==4.0.0a5
pip3 install pyvirtualdisplay
5. python代码
import time
from bs4 import BeautifulSoup
from selenium import webdriver
import pyvirtualdisplay
# 创建虚拟桌面
display = pyvirtualdisplay.Display(backend='xvfb', visible=False, size=(1024, 768))
display.start()
print('Initalized Display:', display.size, display.backend)
# 设置浏览器
options = webdriver.FirefoxOptions()
options.log.level = "trace" # 方便调试
options.headless = True # 无头模式
driver = webdriver.Firefox(options=options)
# 测试一下
url = 'https://www.baidu.com'
driver.get(url)
print(driver.title)
# 退出
driver.close()
driver.quit()
display.stop()
print('Quit...')
6. 添加 selenium 定时任务
可以用 crontab -e
命令添加 selenium 定时任务, 最后一行加入:
# 格式
# minute hour dayofmonth month dayofweek command
0 8 * * * python3 task.py &
如果执行不成功,可能是找不到 selenium webdriver 的路径。
- 检查 firefox-esr 和 geckodriver 的安装目录。
which firefox-esr
# /usr/bin
which geckodriver
# /usr/local/bin
- 然后,在命令前面加上路径配置,
export PATH=/usr/local/bin:/usr/bin;
0 8 * * * export PATH=/usr/local/bin:/usr/bin; python3 task.py &
网友评论