Я бы хотел, чтобы Scrapy не кодировал URL-адреса моих запросов. Я вижу, что scrapy.http.Request импортирует scrapy.utils.url, который импортирует w3lib.url, содержащий переменную _ALWAYS_SAFE_BYTES. Мне просто нужно добавить набор символов в _ALWAYS_SAFE_BYTES, но я не уверен, как это сделать из моего класса пауков.
scrapy.http.Request соответствующая строка:
fp.update(canonicalize_url(request.url))
canonicalize_url взят из scrapy.utils.url, соответствующая строка в scrapy.utils.url:
path = safe_url_string(_unquotepath(path)) or '/'
safe_url_string() из w3lib.url, соответствующие строки в w3lib.url:
_ALWAYS_SAFE_BYTES = (b'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.-')
внутри w3lib.url.safe_url_string():
_safe_chars = _ALWAYS_SAFE_BYTES + b'%' + _reserved + _unreserved_marks
return moves.urllib.parse.quote(s, _safe_chars)