What is the best way to parse data out of a URL query string (for instance, data appended to the URL by a form) in python? My goal is to accept form data and display it on the same page. I've researched several methods that aren't quite what I'm looking for.
I'm creating a simple web server with the goal of learning about sockets. This web server won't be used for anything but testing purposes.
GET /?1pm=sample&2pm=&3pm=&4pm=&5pm= HTTP/1.1
Host: localhost:50000
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://localhost:50000/?1pm=sample&2pm=&3pm=&4pm=&5pm=
The urllib.parse module is your friend: https://docs.python.org/3/library/urllib.parse.html
Check out urllib.parse.parse_qs (parsing a query-string, i.e. form data sent to server by GET or form data posted by POST, at least for non-multipart data). There's also cgi.FieldStorage for interpreting multipart-data.
For parsing the rest of an HTTP interaction, see RFC2616, which is the HTTP/1.1 protocol specification.
Here is an example using python3
urllib.parse
:output:
Note for python2:
from urlparse import urlparse, parse_qs
SEE: https://pythonhosted.org/six/#module-six.moves.urllib.parse
If you need unique key from query string, use
dict()
withparse_qsl()