1. 安装虚拟屏幕
我的树莓派系统是 buster lite 版,没有界面,所以先要安装 xvfb
2. 安装 firefox
1 2 3 4
| sudo apt install firefox-esr
firefox-esr -v
|
3. 安装 geckodriver
下载安装 geckodriver-v0.23.0-arm7hf 版的。
- v0.24.0以后不发布arm7hf平台了,需要自己编译。
- 好在v0.23.0也可以支持较新版本的 Firefox。
1 2 3 4 5 6 7 8
| 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
sudo mv geckodriver /usr/local/bin/
|
ref: https://github.com/mozilla/geckodriver/releases
4. 安装 selenium, pyvirtualdisplay
ref: https://www.selenium.dev/downloads/
1 2
| pip3 install selenium==4.0.0a5 pip3 install pyvirtualdisplay
|
5. python代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| 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 定时任务, 最后一行加入:
1 2 3
| # 格式 # minute hour dayofmonth month dayofweek command 0 8 * * * python3 task.py &
|
如果执行不成功,可能是找不到 selenium webdriver 的路径。
- 检查 firefox-esr 和 geckodriver 的安装目录。
1 2 3 4
| which firefox-esr
which geckodriver
|
- 然后,在命令前面加上路径配置,
export PATH=/usr/local/bin:/usr/bin;
1
| 0 8 * * * export PATH=/usr/local/bin:/usr/bin; python3 task.py &
|