Open
Description
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>