Example of using urllib2 in Python to prevent 302 redirection, pythonurllib2
Note: python's urllib2 web page (urlopen) will be automatically redirected (301,302 ). However, sometimes we need to obtain the status information of the 302,301 page. You must obtain the debugging information before turning.
The following code avoids 302 redirection to a new webpage.
#!/usr/bin/python# -*- coding: utf-8 -*-#encoding=utf-8#Filename:states_code.py import urllib2 class RedirctHandler(urllib2.HTTPRedirectHandler): """docstring for RedirctHandler""" def http_error_301(self, req, fp, code, msg, headers): pass def http_error_302(self, req, fp, code, msg, headers): pass def getUnRedirectUrl(url,timeout=10): req = urllib2.Request(url) debug_handler = urllib2.HTTPHandler(debuglevel = 1) opener = urllib2.build_opener(debug_handler, RedirctHandler) html = None response = None try: response = opener.open(url,timeout=timeout) html = response.read() except urllib2.URLError as e: if hasattr(e, 'code'): error_info = e.code elif hasattr(e, 'reason'): error_info = e.reason finally: if response: response.close() if html: return html else: return error_info html = getUnRedirectUrl('http://jb51.net')print html
How to handle the cookie when urllib2 302 redirects in python
Cookie is only a key-value pair in the HTTP header. You can manually assign a value before the request and save the request...
Or you can use the package:
Import cookielib, urllib2cj = cookielib. CookieJar () opener = urllib2.build _ opener (urllib2.HTTPCookieProcessor (cj) r = opener. open ("example.com /")
Here, cj will implement the storage of the request and assign a value before the request.
Official documentation: docs.python.org/2/library/cookielib.html
Http problems in python urllib2
Print 2 is returned only when the try code has no exception. If you say print 2 is never executed, there is a problem in the try code block.