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...
This is my understanding of what the relations are between the various "urllibs":
In the Python 2 standard library there exist two HTTP libraries side-by-side. Despite the similar name, they are unrelated: they have a different design and a different implementation.
The Python 3 standard library has a new urllib, that is a merged/refactored/rewritten version of those two packages.
urllib3 is a third-party package. Despite the name, it is unrelated to the standard library packages, and there is no intention to include it in the standard library in the future.
Finally, requests internally uses urllib3, but it aims for an easier-to-use API.