Skip to content

Case-insensitive CSS attribute selectors support  #139

Open
@ounissi-zakaria

Description

@ounissi-zakaria

Hello,
Is it possible to add support for Case-insensitive CSS attribute selectors the feature has been available for a while for browsers and i have used it with selenium before but using parsel/scrapy i get an error. Here's a basic example:

>>> from parsel import Selector
>>> selector = Selector(text="""
     <a href="HTTP://SCRAPY.ORG">Link 1</a>
    <a href="http://scrapy.org">Link 2</a>
""")
>>> selector.css('a[href*="http" i]') # should get both a tags
Traceback (most recent call last):

  File ~/miniconda3/envs/DIS/lib/python3.10/site-packages/IPython/core/interactiveshell.py:3442 in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)

  Cell In[127], line 1
    selector.css('a[href*="http" i]')

  File ~/miniconda3/envs/DIS/lib/python3.10/site-packages/parsel/selector.py:456 in css
    return self.xpath(self._css2xpath(query))

  File ~/miniconda3/envs/DIS/lib/python3.10/site-packages/parsel/selector.py:459 in _css2xpath
    return self._csstranslator.css_to_xpath(query)

  File ~/miniconda3/envs/DIS/lib/python3.10/site-packages/parsel/csstranslator.py:104 in css_to_xpath
    return super().css_to_xpath(css, prefix)

  File ~/miniconda3/envs/DIS/lib/python3.10/site-packages/cssselect/xpath.py:224 in css_to_xpath
    for selector in parse(css)

  File ~/miniconda3/envs/DIS/lib/python3.10/site-packages/cssselect/parser.py:543 in parse
    return list(parse_selector_group(stream))

  File ~/miniconda3/envs/DIS/lib/python3.10/site-packages/cssselect/parser.py:558 in parse_selector_group
    yield Selector(*parse_selector(stream))

  File ~/miniconda3/envs/DIS/lib/python3.10/site-packages/cssselect/parser.py:567 in parse_selector
    result, pseudo_element = parse_simple_selector(stream)

  File ~/miniconda3/envs/DIS/lib/python3.10/site-packages/cssselect/parser.py:634 in parse_simple_selector
    result = parse_attrib(result, stream)

  File ~/miniconda3/envs/DIS/lib/python3.10/site-packages/cssselect/parser.py:802 in parse_attrib
    raise SelectorSyntaxError("Expected ']', got %s" % (next,))

  File <string>
SelectorSyntaxError: Expected ']', got <IDENT 'i' at 15>

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions