Skip to content

Commit 0de3fb4

Browse files
committed
ajax crawling wasn't expanding for unicode urls
1 parent 454a21d commit 0de3fb4

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

scrapy/http/request/__init__.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,7 @@ def _set_url(http://github.com/self,%20url):
5454
if self.encoding is None:
5555
raise TypeError('Cannot convert unicode url - %s has no encoding' %
5656
type(self).__name__)
57-
unicode_url = url if isinstance(url, unicode) else url.decode(self.encoding)
58-
self._url = safe_url_string(unicode_url, self.encoding)
57+
self._set_url(url.encode(self.encoding))
5958
else:
6059
raise TypeError('Request url must be str or unicode, got %s:' % type(url).__name__)
6160
if ':' not in self._url:

scrapy/tests/test_http_request.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,12 @@ def test_body(self):
108108
self.assertEqual(r4.body, "Price: \xa3100")
109109

110110
def test_ajax_url(self):
111+
# ascii url
111112
r = self.request_class(url="http://www.example.com/ajax.html#!key=value")
112113
self.assertEqual(r.url, "http://www.example.com/ajax.html?_escaped_fragment_=key=value")
114+
# unicode url
115+
r = self.request_class(url=u"http://www.example.com/ajax.html#!key=value")
116+
self.assertEqual(r.url, "http://www.example.com/ajax.html?_escaped_fragment_=key=value")
113117

114118
def test_copy(self):
115119
"""Test Request copy"""

0 commit comments

Comments
 (0)