Skip to content

Commit

Permalink
Add ItemSelector.
Browse files Browse the repository at this point in the history
  • Loading branch information
hwms committed Apr 7, 2016
1 parent d32e6c0 commit 89f0352
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 0 deletions.
1 change: 1 addition & 0 deletions noscrapy/selectors/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from .group import GroupSelector
from .html import HtmlSelector
from .image import ImageSelector
from .item import ItemSelector
from .link import LinkSelector
from .text import TextSelector
12 changes: 12 additions & 0 deletions noscrapy/selectors/item.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from ..selector import Selector

class ItemSelector(Selector):
can_have_childs = True
can_have_local_childs = True
will_return_items = True

def _get_data(self, parent_item):
yield from self.get_items(parent_item)

def _get_columns(self):
return ()
22 changes: 22 additions & 0 deletions noscrapy/tests/test_item_selector.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import pytest

from noscrapy.selectors import ItemSelector

GET_DATA = {
'single':
(ItemSelector('a', css='p', many=False), '<p>a</p><p>b</p>', ['<p>a</p>']),
'many':
(ItemSelector('a', css='p'), '<p>a</p><p>b</p>', ['<p>a</p>', '<p>b</p>']),
'none':
(ItemSelector('a', css='p'), None, []),
'no_elements':
(ItemSelector('a', css='p'), '', []),
'just_space':
(ItemSelector('a', css='p'), ' ', []),
}
@pytest.mark.parametrize('selector,html,expected', list(GET_DATA.values()), ids=list(GET_DATA))
def test_item_selector_get_data(selector, html, expected):
assert list(selector.get_data(html)) == expected

def test_item_selector_columns():
assert ItemSelector('id').columns == ()

0 comments on commit 89f0352

Please sign in to comment.