From a9eb0b74c8aebcbab72d5af20261c18bf8afc388 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Gra=C3=B1a?= Date: Fri, 11 Oct 2013 19:53:01 -0200 Subject: [PATCH] port scrapy shell to unified selector api --- scrapy/shell.py | 13 +++---------- scrapy/tests/test_command_shell.py | 2 +- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/scrapy/shell.py b/scrapy/shell.py index 642b3d6e6..8b6c209cb 100644 --- a/scrapy/shell.py +++ b/scrapy/shell.py @@ -11,7 +11,7 @@ from w3lib.url import any_to_uri from scrapy.item import BaseItem from scrapy.spider import BaseSpider -from scrapy.selector import XPathSelector, XmlXPathSelector, HtmlXPathSelector, XmlCSSSelector, HtmlCSSSelector +from scrapy.selector import Selector from scrapy.utils.spider import create_spider_for_request from scrapy.utils.misc import load_object from scrapy.utils.response import open_in_browser @@ -24,7 +24,7 @@ from scrapy.exceptions import IgnoreRequest class Shell(object): relevant_classes = (BaseSpider, Request, Response, BaseItem, - XPathSelector, Settings) + Selector, Settings) def __init__(self, crawler, update_vars=None, code=None): self.crawler = crawler @@ -95,14 +95,7 @@ class Shell(object): self.vars['spider'] = spider self.vars['request'] = request self.vars['response'] = response - self.vars['xxs'] = XmlXPathSelector(response) \ - if isinstance(response, XmlResponse) else None - self.vars['xcs'] = XmlCSSSelector(response) \ - if isinstance(response, XmlResponse) else None - self.vars['hxs'] = HtmlXPathSelector(response) \ - if isinstance(response, HtmlResponse) else None - self.vars['hcs'] = HtmlCSSSelector(response) \ - if isinstance(response, HtmlResponse) else None + self.vars['ss'] = Selector(response) if self.inthread: self.vars['fetch'] = self.fetch self.vars['view'] = open_in_browser diff --git a/scrapy/tests/test_command_shell.py b/scrapy/tests/test_command_shell.py index bdfd8bb20..8dbaa632f 100644 --- a/scrapy/tests/test_command_shell.py +++ b/scrapy/tests/test_command_shell.py @@ -31,7 +31,7 @@ class ShellTest(ProcessTest, SiteTest, unittest.TestCase): @defer.inlineCallbacks def test_response_selector_html(self): - xpath = 'hxs.select("//p[@class=\'one\']/text()").extract()[0]' + xpath = 'ss.xpath("//p[@class=\'one\']/text()").extract()[0]' _, out, _ = yield self.execute([self.url('/html'), '-c', xpath]) self.assertEqual(out.strip(), 'Works')