To POST data pass the encoded query arguments as data to urlopen()
import urllib
query_parms = {'username':'stackoverflow', 'password':'me.me'}
encoded_parms = urllib.urlencode(query_parms)
response = urllib.urlopen("<https://stackoverflow.com/users/login>", encoded_parms)
response.code
# Output: 200
response.read()
# Output: '<!DOCTYPE html>\\r\\n<html>\\r\\n<head>\\r\\n\\r\\n<title>Log In - Stack Overflow'
import urllib
query_parms = {'username':'stackoverflow', 'password':'me.me'}
encoded_parms = urllib.parse.urlencode(query_parms).encode('utf-8')
response = urllib.request.urlopen("<https://stackoverflow.com/users/login>", encoded_parms)
response.code
# Output: 200
response.read()
# Output: b'<!DOCTYPE html>\\r\\n<html>....etc'