Skip to content

Commit 40745d5

Browse files
committed
支持自动安装 selenium驱动
1 parent 31e3e46 commit 40745d5

5 files changed

Lines changed: 21 additions & 0 deletions

File tree

feapder/requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ urllib3>=1.25.8
1616
loguru>=0.5.3
1717
influxdb>=5.3.1
1818
pyperclip>=1.8.2
19+
webdriver-manager>=3.5.3

feapder/setting.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
render_time=0, # 渲染时长,即打开网页等待指定时间后再获取源码
7878
custom_argument=["--ignore-certificate-errors"], # 自定义浏览器渲染参数
7979
xhr_url_regexes=None, # 拦截xhr接口,支持正则,数组类型
80+
auto_install_driver=False, # 自动下载浏览器驱动 支持chrome 和 firefox
8081
)
8182

8283
# 爬虫启动时,重新抓取失败的requests

feapder/templates/project_template/setting.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
# render_time=0, # 渲染时长,即打开网页等待指定时间后再获取源码
6262
# custom_argument=["--ignore-certificate-errors"], # 自定义浏览器渲染参数
6363
# xhr_url_regexes=None, # 拦截xhr接口,支持正则,数组类型
64+
# auto_install_driver=False, # 自动下载浏览器驱动 支持chrome 和 firefox
6465
# )
6566
#
6667
# # 爬虫启动时,重新抓取失败的requests

feapder/utils/webdriver.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
from selenium import webdriver
1818
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
1919
from selenium.webdriver.remote.webdriver import WebDriver as RemoteWebDriver
20+
from webdriver_manager.chrome import ChromeDriverManager
21+
from webdriver_manager.firefox import GeckoDriverManager
2022

2123
from feapder.utils.log import log
2224
from feapder.utils.tools import Singleton
@@ -58,6 +60,7 @@ def __init__(
5860
custom_argument=None,
5961
xhr_url_regexes: list = None,
6062
download_path=None,
63+
auto_install_driver=False,
6164
**kwargs,
6265
):
6366
"""
@@ -73,6 +76,7 @@ def __init__(
7376
executable_path: 浏览器路径,默认为默认路径
7477
xhr_url_regexes: 拦截xhr接口,支持正则,数组类型
7578
download_path: 文件下载保存路径;如果指定,不再出现“保留”“放弃”提示,仅对Chrome有效
79+
auto_install_driver: 自动下载浏览器驱动 支持chrome 和 firefox
7680
**kwargs:
7781
"""
7882
self._load_images = load_images
@@ -85,6 +89,7 @@ def __init__(
8589
self._custom_argument = custom_argument
8690
self._xhr_url_regexes = xhr_url_regexes
8791
self._download_path = download_path
92+
self._auto_install_driver = auto_install_driver
8893

8994
if self._xhr_url_regexes and driver_type != WebDriver.CHROME:
9095
raise Exception(
@@ -165,6 +170,13 @@ def firefox_driver(self):
165170
firefox_profile=firefox_profile,
166171
executable_path=self._executable_path,
167172
)
173+
elif self._auto_install_driver:
174+
driver = webdriver.Firefox(
175+
capabilities=firefox_capabilities,
176+
options=firefox_options,
177+
firefox_profile=firefox_profile,
178+
executable_path=GeckoDriverManager(print_first_line=False).install(),
179+
)
168180
else:
169181
driver = webdriver.Firefox(
170182
capabilities=firefox_capabilities,
@@ -230,6 +242,11 @@ def chrome_driver(self):
230242
driver = webdriver.Chrome(
231243
options=chrome_options, executable_path=self._executable_path
232244
)
245+
elif self._auto_install_driver:
246+
driver = webdriver.Chrome(
247+
options=chrome_options,
248+
executable_path=ChromeDriverManager(print_first_line=False).install(),
249+
)
233250
else:
234251
driver = webdriver.Chrome(options=chrome_options)
235252

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
"loguru>=0.5.3",
5252
"influxdb>=5.3.1",
5353
"pyperclip>=1.8.2",
54+
"webdriver-manager>=3.5.3",
5455
]
5556

5657
memory_dedup_requires = ["bitarray>=1.5.3"]

0 commit comments

Comments
 (0)