Skip to content

Commit 0aac226

Browse files
committed
Fixed bug in Scrapy shell's fetch() which wasn't updating local variables properly. Closes scrapy#306
1 parent 0c5f605 commit 0aac226

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

scrapy/shell.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ def __init__(self, crawler, update_vars=None, inthread=False, code=None):
3030
self.item_class = load_object(crawler.settings['DEFAULT_ITEM_CLASS'])
3131
self.inthread = inthread
3232
self.code = code
33+
self.vars = {}
3334

3435
def start(self, *a, **kw):
3536
# disable accidental Ctrl-C key press from shutting down the engine
@@ -77,18 +78,15 @@ def fetch(self, request_or_url, spider=None):
7778
self.populate_vars(url, response, request, spider)
7879

7980
def populate_vars(self, url=None, response=None, request=None, spider=None):
80-
item = self.item_class()
81-
self.vars = {}
82-
self.vars['item'] = item
81+
self.vars['item'] = self.item_class()
8382
self.vars['settings'] = self.crawler.settings
84-
if url:
85-
if isinstance(response, XmlResponse):
86-
self.vars['xxs'] = XmlXPathSelector(response)
87-
if isinstance(response, HtmlResponse):
88-
self.vars['hxs'] = HtmlXPathSelector(response)
89-
self.vars['response'] = response
90-
self.vars['request'] = request
91-
self.vars['spider'] = spider
83+
self.vars['spider'] = spider
84+
self.vars['request'] = request
85+
self.vars['response'] = response
86+
self.vars['xxs'] = XmlXPathSelector(response) \
87+
if isinstance(response, XmlResponse) else None
88+
self.vars['hxs'] = HtmlXPathSelector(response) \
89+
if isinstance(response, HtmlResponse) else None
9290
if self.inthread:
9391
self.vars['fetch'] = self.fetch
9492
self.vars['view'] = open_in_browser

0 commit comments

Comments
 (0)