From ac646a3b4784e8f15f29357d3760750cc7b29753 Mon Sep 17 00:00:00 2001 From: Daniel Grana Date: Fri, 30 Apr 2010 16:19:59 -0300 Subject: [PATCH] url_query_cleaner: do not append ? if query is empty --- scrapy/tests/test_utils_url.py | 2 ++ scrapy/utils/url.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/scrapy/tests/test_utils_url.py b/scrapy/tests/test_utils_url.py index 29e7cf8e0..8c3d95fd5 100644 --- a/scrapy/tests/test_utils_url.py +++ b/scrapy/tests/test_utils_url.py @@ -138,6 +138,8 @@ class UrlUtilsTest(unittest.TestCase): def test_url_query_cleaner(self): self.assertEqual('product.html?id=200', url_query_cleaner("product.html?id=200&foo=bar&name=wired", ['id'])) + self.assertEqual('product.html', + url_query_cleaner("product.html?foo=bar&name=wired", ['id'])) self.assertEqual('product.html?id=200&name=wired', url_query_cleaner("product.html?id=200&foo=bar&name=wired", ['id', 'name'])) self.assertEqual('product.html?id', diff --git a/scrapy/utils/url.py b/scrapy/utils/url.py index 02340deae..3473fd487 100644 --- a/scrapy/utils/url.py +++ b/scrapy/utils/url.py @@ -108,7 +108,8 @@ def url_query_cleaner(url, parameterlist=(), sep='&', kvsep='=', remove=False, u else: querylist.append([k, s, v]) seen.add(k) - return base + '?' + sep.join(''.join(ksv) for ksv in querylist) + query = '?' + sep.join(''.join(ksv) for ksv in querylist) + return urlparse.urljoin(base, query) def add_or_replace_parameter(url, name, new_value, sep='&', url_is_quoted=False): """Add or remove a parameter to a given url"""