137

When I try to follow the Python Wiki's example related to URL encoding:

>>> import urllib
>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)
>>> print f.read()

An error is raised on the second line:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'urlencode'

What am I missing?

Nathan Smith
  • 683
  • 1
  • 10
  • 24
Croll
  • 3,631
  • 6
  • 30
  • 63

3 Answers3

336

urllib has been split up in Python 3.

The urllib.urlencode() function is now urllib.parse.urlencode(),

the urllib.urlopen() function is now urllib.request.urlopen().

Usman Maqbool
  • 3,351
  • 10
  • 31
  • 48
Kevin
  • 28,963
  • 9
  • 62
  • 81
44
import urllib.parse
urllib.parse.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
Vijay P R
  • 1,162
  • 1
  • 10
  • 16
5

You use the Python 2 docs but write your program in Python 3.

User
  • 14,131
  • 2
  • 40
  • 59