python3中requests庫重定向獲取URL
前言:
有時候 我們抓取一些頁面,發(fā)現(xiàn)一些url 有重定向, 返回 301 ,或者302 這種情況。 那么我們?nèi)绾潍@取真實的URL呢? 或者跳轉(zhuǎn)后的URL呢?
這里我使用 requests 作為演示
假設(shè)我們要訪問 某東的電子商務(wù)網(wǎng)站,我只記得網(wǎng)站好像是 http://jd.com
import requests
def request_jd():
url = 'http://jd.com/'
#allow_redirects= False 這里設(shè)置不允許跳轉(zhuǎn)
response = requests.get(url=url, allow_redirects=False)
print(response.headers)
print(response.status_code)
看結(jié)果 返回response header 中有一個屬性 Location ,代表重定向了 'Location': 'https://www.jd.com'

我們在瀏覽器中 chrome network 面板 ,抓包觀察。 注意把 preserve log 這個選項勾選上。
從 瀏覽器的response header 中 我們可以看到 Location, 從 General 我們可以看到 status code 301 ,發(fā)生了跳轉(zhuǎn)。

方法1:
你現(xiàn)在知道如何獲取跳轉(zhuǎn)后的URL了嗎,直接從response header,獲取 Location 即可。
在request.header 中 返回header 的key是不區(qū)分大小寫的, 所以全小寫也是可以正確取值的。
import requests
def request_jd():
url = 'http://jd.com/'
response = requests.get(url=url, allow_redirects=False)
#return response.headers.get('location')
return response.headers.get('Location')方法2:
其實默認情況下, requests 會自動跳轉(zhuǎn),如果發(fā)生了重定向,會自動跳到location 指定的URL,我們只需要訪問URL, 獲取response, 然后 response.url 就可以獲取到真實的URL啦。
import requests
def request_jd():
url = 'http://jd.com/'
response = requests.get(url=url)
return response.url到此這篇關(guān)于python3中requests庫重定向獲取URL的文章就介紹到這了,更多相關(guān)python獲取URL 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django基于ORM操作數(shù)據(jù)庫的方法詳解
Python實現(xiàn)生成隨機數(shù)據(jù)插入mysql數(shù)據(jù)庫的方法
PyTorch之nn.ReLU與F.ReLU的區(qū)別介紹
Django Rest Framework框架構(gòu)建復(fù)雜API技能詳解
全網(wǎng)最全python庫selenium自動化使用詳細教程

