How to formally insert URL space (%20) using Python? [duplicate]
Asked Answered
R

1

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?

Rodomontade answered 24/9, 2015 at 13:9 Comment(3)
You probably want urllib.quote().Eupheemia
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.Kandrakandy
@MartijnPieters Thanks for the comprehensive answer as always, Martijn.Rodomontade
H
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

Hephzipah answered 24/9, 2015 at 13:11 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.