Skip to content

Commit cf29263

Browse files
committed
Save attributes from SeleniumRequest into meta
1 parent 2e557f6 commit cf29263

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

scrapy_selenium/http.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,17 @@
66
class SeleniumRequest(Request):
77
"""Scrapy ``Request`` subclass providing additional arguments"""
88

9-
def __init__(self, wait_time=None, wait_until=None, screenshot=False, script=None, *args, **kwargs):
9+
var_names = ["wait_time", "wait_until", "screenshot", "script"]
10+
11+
def __init__(
12+
self,
13+
wait_time=None,
14+
wait_until=None,
15+
screenshot=False,
16+
script=None,
17+
*args,
18+
**kwargs,
19+
):
1020
"""Initialize a new selenium request
1121
1222
Parameters
@@ -30,3 +40,14 @@ def __init__(self, wait_time=None, wait_until=None, screenshot=False, script=Non
3040
self.script = script
3141

3242
super().__init__(*args, **kwargs)
43+
44+
for name, value in zip(
45+
self.var_names, map(lambda x: getattr(self, x), self.var_names)
46+
):
47+
if value:
48+
self.meta[name] = value
49+
50+
def unpack_meta(self):
51+
for name in self.var_names:
52+
setattr(self, name, self.meta.get(name))
53+
return self

scrapy_selenium/middlewares.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ def process_request(self, request, spider):
100100
if not isinstance(request, SeleniumRequest):
101101
return None
102102

103+
request.unpack_meta()
104+
103105
self.driver.get(request.url)
104106

105107
for cookie_name, cookie_value in request.cookies.items():
@@ -137,4 +139,3 @@ def spider_closed(self):
137139
"""Shutdown the driver when spider is closed"""
138140

139141
self.driver.quit()
140-

0 commit comments

Comments
 (0)