網(wǎng)站首頁 編程語言 正文
前言:
有時(shí)候 我們抓取一些頁面,發(fā)現(xiàn)一些url 有重定向, 返回 301 ,或者302 這種情況。 那么我們?nèi)绾潍@取真實(shí)的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 中有一個(gè)屬性 Location ,代表重定向了 'Location': 'https://www.jd.com'
我們?cè)跒g覽器中 chrome network 面板 ,抓包觀察。 注意把 preserve log 這個(gè)選項(xiàng)勾選上。
從 瀏覽器的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:
其實(shí)默認(rèn)情況下, requests 會(huì)自動(dòng)跳轉(zhuǎn),如果發(fā)生了重定向,會(huì)自動(dòng)跳到location 指定的URL,我們只需要訪問URL, 獲取response, 然后 response.url 就可以獲取到真實(shí)的URL啦。
import requests def request_jd(): url = 'http://jd.com/' response = requests.get(url=url) return response.url
原文鏈接:https://blog.csdn.net/u010339879/article/details/119517222
相關(guān)推薦
- 2022-12-13 深入了解Go的HttpClient超時(shí)機(jī)制_Golang
- 2022-02-07 解決 laravels 無法接收微信回調(diào)的參數(shù)問題
- 2022-07-26 Fatal error in launcher: Unable to create process
- 2022-10-29 Golang?動(dòng)態(tài)腳本調(diào)研詳解_Golang
- 2022-06-12 python操作RabbitMq的三種工作模式_python
- 2022-01-30 composer 安裝包,提示找不到對(duì)應(yīng)的包,很奇怪的問題,備忘
- 2022-10-18 shell腳本批量將文件復(fù)制到指定的文件夾下_linux shell
- 2022-12-27 詳解PyQt5?事件處理機(jī)制_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支