Is there a way to automatically follow redirects using the http.client
module:
def grab_url(host, path = '/'):
class Data: pass
result = Data()
try:
con = http.client.HTTPConnection(host)
con.request('GET', path)
response = con.getresponse()
if response.status == 200:
result.content = response.read().decode('utf-8')
result.headers = response.getheaders()
catch Exception as e:
print(e)
return result
The above works as long as the request returns a http response of 200
, but I don't know how to handle redirects like 301
?
Using pyCurl
I would simply set the FOLLOWLOCATION
to True
:
def grab_url(host, path = '/'):
buffer = BytesIO()
c = pyCurl.Curl()
c.setopt(c.FOLLOWLOCATION, True)
c.setopt(c.URL, host + path)
c.setopt(c.WRITEDATA, buffer)
c.perform()
status = c.getinfo(c.RESPONSE_CODE)
if status == 200:
return buffer.getvalue().decode('iso-8859-1')