Пример #1
0
    def test_nested_replace(self):
        loader = ItemLoader(selector=self.selector)
        nl1 = loader.nested_xpath('//footer')
        nl2 = nl1.nested_xpath('a')

        loader.add_xpath('url', '//footer/a/@href')
        self.assertEqual(loader.get_output_value('url'),
                         ['http://www.scrapy.org'])
        nl1.replace_xpath('url', 'img/@src')
        self.assertEqual(loader.get_output_value('url'), ['/images/logo.png'])
        nl2.replace_xpath('url', '@href')
        self.assertEqual(loader.get_output_value('url'),
                         ['http://www.scrapy.org'])
 def test_get_output_value_list(self):
     """Getting output value must not remove value from item"""
     input_item = self.item_class(name=['foo', 'bar'])
     il = ItemLoader(item=input_item)
     self.assertEqual(il.get_output_value('name'), ['foo', 'bar'])
     loaded_item = il.load_item()
     self.assertIsInstance(loaded_item, self.item_class)
     self.assertEqual(loaded_item, dict({'name': ['foo', 'bar']}))
Пример #3
0
    def test_nested_ordering(self):
        loader = ItemLoader(selector=self.selector)
        nl1 = loader.nested_xpath('//footer')
        nl2 = nl1.nested_xpath('a')

        nl1.add_xpath('url', 'img/@src')
        loader.add_xpath('url', '//footer/a/@href')
        nl2.add_xpath('url', 'text()')
        loader.add_xpath('url', '//footer/a/@href')

        self.assertEqual(loader.get_output_value('url'), [
            '/images/logo.png',
            'http://www.scrapy.org',
            'homepage',
            'http://www.scrapy.org',
        ])
Пример #4
0
    def test_nested_css(self):
        loader = ItemLoader(selector=self.selector)
        nl = loader.nested_css("header")
        nl.add_xpath('name', 'div/text()')
        nl.add_css('name_div', '#id')
        nl.add_value('name_value',
                     nl.selector.xpath('div[@id = "id"]/text()').getall())

        self.assertEqual(loader.get_output_value('name'), ['marta'])
        self.assertEqual(loader.get_output_value('name_div'),
                         ['<div id="id">marta</div>'])
        self.assertEqual(loader.get_output_value('name_value'), ['marta'])

        self.assertEqual(loader.get_output_value('name'),
                         nl.get_output_value('name'))
        self.assertEqual(loader.get_output_value('name_div'),
                         nl.get_output_value('name_div'))
        self.assertEqual(loader.get_output_value('name_value'),
                         nl.get_output_value('name_value'))
Пример #5
0
 def test_get_unset_value(self):
     loader = ItemLoader()
     self.assertEqual(loader.load_item(), {})
     self.assertEqual(loader.get_output_value('foo'), [])
     self.assertEqual(loader.load_item(), {})