1. requests库介绍
Python3的requests库是一个常用的HTTP库,它能够方便地发送HTTP/1.1请求。使用requests库可以实现GET、POST、PUT、DELETE等HTTP请求,并且可以发送数据和文件,处理Cookies和重定向等,非常方便实用。
2. 重定向
2.1 什么是重定向?
重定向是指当浏览器发送一个请求到服务器时,服务器返回一个302状态码,告诉浏览器需要跳转到另一个URL。这个新的URL就是重定向URL。浏览器会自动向新的URL发起请求,完成页面的跳转。
在requests库中,当我们发送一个请求时,如果服务器返回的状态码是302,那么我们可以通过重定向来获取到跳转后的URL。
2.2 如何处理重定向?
在requests库中,默认情况下会自动处理重定向。当我们使用requests.get()方法发送一个HTTP请求时,如果服务器返回的状态码是302,requests库会自动在response对象中的headers里面找到Location字段,该字段的值就是重定向URL。我们可以通过response.headers['Location']获取到重定向URL。
例如:
import requests
response = requests.get('http://example.com')
if response.status_code == 302:
redirect_url = response.headers['Location']
print(redirect_url)
上面的代码中,我们发送了一个GET请求到http://example.com,如果返回的状态码是302,那么就打印出重定向URL。
3. 设置最大重定向次数
requests库默认情况下最大重定向次数是30次,超过这个次数会抛出一个异常。如果我们需要设置最大重定向次数,可以通过设置max_redirects参数来实现。
import requests
response = requests.get('http://example.com', allow_redirects=True, max_redirects=5)
上面的代码中,我们设置最大重定向次数为5次。allow_redirects参数表示允许重定向。
4. 重定向URL获取
4.1 获取最终的URL
我们可以通过response对象的url属性获取到最终的URL:
import requests
response = requests.get('http://example.com')
print(response.url)
上面的代码中,我们发送了一个GET请求到http://example.com,然后通过response.url获取到最终的URL。
注意:在某些情况下,最终的URL可能与重定向URL不同。通过response.url可以获取到实际访问的URL。
4.2 获取所有重定向URL
除了获取最终的URL,有时候我们也需要获取所有的重定向URL。requests库提供了一个history属性,可以获取所有重定向的URL。例如:
import requests
response = requests.get('http://example.com', allow_redirects=True)
for redirect in response.history:
print(redirect.url)
上面的代码中,我们发送了一个GET请求到http://example.com,通过response.history获取到所有的重定向URL,并打印出来。
总结
本文介绍了Python3中使用requests库进行重定向URL获取的方法。通过调用requests.get()方法发送HTTP请求,并结合response对象的属性和方法,我们可以方便地获取到重定向URL。在实际开发中,可以根据需求设置最大重定向次数,并获取最终的URL和所有重定向URL。