13
13
class SeleniumMiddleware :
14
14
"""Scrapy middleware handling the requests using selenium"""
15
15
16
- def __init__ (self , driver_name , driver_executable_path , driver_arguments ):
16
+ def __init__ (self , driver_name , driver_executable_path , driver_arguments ,
17
+ browser_executable_path ):
17
18
"""Initialize the selenium webdriver
18
19
19
20
Parameters
@@ -24,7 +25,8 @@ def __init__(self, driver_name, driver_executable_path, driver_arguments):
24
25
The path of the executable binary of the driver
25
26
driver_arguments: list
26
27
A list of arguments to initialize the driver
27
-
28
+ browser_executable_path: str
29
+ The path of the executable binary of the browser
28
30
"""
29
31
30
32
webdriver_base_path = f'selenium.webdriver.{ driver_name } '
@@ -36,6 +38,8 @@ def __init__(self, driver_name, driver_executable_path, driver_arguments):
36
38
driver_options_klass = getattr (driver_options_module , 'Options' )
37
39
38
40
driver_options = driver_options_klass ()
41
+ if browser_executable_path :
42
+ driver_options .binary_location = browser_executable_path
39
43
for argument in driver_arguments :
40
44
driver_options .add_argument (argument )
41
45
@@ -52,6 +56,7 @@ def from_crawler(cls, crawler):
52
56
53
57
driver_name = crawler .settings .get ('SELENIUM_DRIVER_NAME' )
54
58
driver_executable_path = crawler .settings .get ('SELENIUM_DRIVER_EXECUTABLE_PATH' )
59
+ browser_executable_path = crawler .settings .get ('SELENIUM_BROWSER_EXECUTABLE_PATH' )
55
60
driver_arguments = crawler .settings .get ('SELENIUM_DRIVER_ARGUMENTS' )
56
61
57
62
if not driver_name or not driver_executable_path :
@@ -62,7 +67,8 @@ def from_crawler(cls, crawler):
62
67
middleware = cls (
63
68
driver_name = driver_name ,
64
69
driver_executable_path = driver_executable_path ,
65
- driver_arguments = driver_arguments
70
+ driver_arguments = driver_arguments ,
71
+ browser_executable_path = browser_executable_path
66
72
)
67
73
68
74
crawler .signals .connect (middleware .spider_closed , signals .spider_closed )
0 commit comments