pythonpython-requestsurlliburllib2urllib3

What are the differences between the urllib, urllib2, urllib3 and requests module?


In Python, what are the differences between the urllib, urllib2, urllib3 and requests modules? Why are there three? They seem to do the same thing...


Solution

  • I know it's been said already, but I'd highly recommend the requests Python package.

    If you've used languages other than python, you're probably thinking urllib and urllib2 are easy to use, not much code, and highly capable, that's how I used to think. But the requests package is so unbelievably useful and short that everyone should be using it.

    First, it supports a fully restful API, and is as easy as:

    import requests
    
    resp = requests.get('http://www.mywebsite.com/user')
    resp = requests.post('http://www.mywebsite.com/user')
    resp = requests.put('http://www.mywebsite.com/user/put')
    resp = requests.delete('http://www.mywebsite.com/user/delete')
    

    Regardless of whether GET / POST, you never have to encode parameters again, it simply takes a dictionary as an argument and is good to go:

    userdata = {"firstname": "John", "lastname": "Doe", "password": "jdoe123"}
    resp = requests.post('http://www.mywebsite.com/user', data=userdata)
    

    Plus it even has a built in JSON decoder (again, I know json.loads() isn't a lot more to write, but this sure is convenient):

    resp.json()
    

    Or if your response data is just text, use:

    resp.text
    

    This is just the tip of the iceberg. This is the list of features from the requests site: