11

When a mutli-word search term is entered in ebay, the resultant URL looks something like (for example "demarini cf5 cf12"):

http://www.ebay.com/sch/i.html?_from=R40&_sacat=0&_nkw=demarini%20cf5%20cfc12

I wish to construct this URL in Python so it can be accessed directly. So it's case of concatenating the base URL:

http://www.ebay.com/sch/i.html?_from=R40&_sacat=0&_nkw=

... with the search term. Right now. I am adding the %20 for the spaces explicately thus:

baseUrl = 'http://www.ebay.com/sch/i.html?_from=R40&_sacat=0&_nkw='
searchTerm = 'demarini cf5 cf12'
searchTerm = ('%20').join(searchTerm.split(' '))
finalUrl = baseUrl + searchTerm

What is a more formal way of doing this in Python? I believe the name for this sort of task is URL encoding?

3
  • 1
    You probably want urllib.quote(). Commented Sep 24, 2015 at 13:11
  • 1
    The proper way of encoding a space in the query string of a URL is the + sign. See Wikipedia and the HTML specification. As such urllib.quote_plus() should be used instead when encoding just one key or value, or use urllib.urlencode() when you have a dictionary or sequence of key-value pairs. Commented Sep 24, 2015 at 13:14
  • @MartijnPieters Thanks for the comprehensive answer as always, Martijn. Commented Sep 24, 2015 at 13:26

1 Answer 1

17

Use urllib library

import urllib
finalurl = baseUrl + urllib.parse.quote(searchterm)

you can use quote_plus() to add + insted of %20 to undo this use

urllib.parse.unquote(str)

In Python 2, use urllib.quote() and urllib.unquote() respectively

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.