python3中requests库重定向获取URL

前言:

有时候 我们抓取一些页面,发现一些url 有重定向, 返回 301 ,或者302 这种情况。 那么我们如何获取真实的URL呢? 或者跳转后的URL呢?

这里我使用 requests 作为演示

假设我们要访问 某东的电子商务网站,我只记得网站好像是 http://jd.com

import requests

def request_jd():
    url = 'http://jd.com/'
    #allow_redirects= False 这里设置不允许跳转
    response = requests.get(url=url, allow_redirects=False)

    print(response.headers)
    print(response.status_code)
    

看结果 返回response header 中有一个属性 Location ,代表重定向了 'Location': 'https://www.jd.com'

我们在浏览器中 chrome network 面板 ,抓包观察。 注意把 preserve log 这个选项勾选上。

从 浏览器的response header 中 我们可以看到 Location, 从 General 我们可以看到 status code 301 ,发生了跳转。

方法1:

你现在知道如何获取跳转后的URL了吗,直接从response header,获取 Location 即可。

在request.header 中 返回header 的key是不区分大小写的, 所以全小写也是可以正确取值的。

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 会自动跳转,如果发生了重定向,会自动跳到location 指定的URL,我们只需要访问URL, 获取response, 然后 response.url 就可以获取到真实的URL啦。

import requests

def request_jd():
    url = 'http://jd.com/'
    response = requests.get(url=url)

    return response.url

到此这篇关于python3中requests库重定向获取URL的文章就介绍到这了,更多相关python获取URL 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python中使用urllib2获取http请求状态码的代码例子

    采集内容常需要得到网页返回的验证码做进一步处理 下面代码是用python写的用来获取网页http状态码的脚本 #!/usr/bin/python # -*- coding: utf-8 -*- #encoding=utf-8 #Filename:states_code.py import urllib2 url = 'http://www.jb51.net/' response = None try: response = urllib2.urlopen(url,timeout=5) excep

  • python3获取文件中url内容并下载代码实例

    这篇文章主要介绍了python3获取文件中url内容并下载代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019-12-25 11:33 # @Author : Anthony # @Email : ianghont7@163.com # @File : get_video_audio_file.py import xlrd

  • Python 解析获取 URL 参数及使用步骤

    下文中使用的 URL 地址是:https://www.example.com/?keyword=abc&id=12 Python 解析获取 URL 参数的步骤如下: 首先导入 Python3 自带的urllib.parse 该模块用于将 URL 解析为各部分(需要注意的是解析的是字符串,所以要加引号): >>> from urllib import parse 或者 >>> from urllib.parse import urlparse 然后使用urlpar

  • Python爬虫后获取重定向url的两种方法

    下面给大家分享Python爬虫后获取重定向url的两种方法,具体内容如下所示: 方法(一) # 获得重定向url from urllib import request # https://zhidao.baidu.com/question/681501874175782812.html url = "https://www.baidu.com/link?url=IscBx0u8h9q4Uq3ihTs_PqnoNWe7slVWAd2dowQKrnqJedvthb3zrh9JqcMJu3ZqFrbW

  • python通过urllib2获取带有中文参数url内容的方法

    本文实例讲述了python通过urllib2获取带有中文参数url内容的方法.分享给大家供大家参考.具体如下: 对于中文的参数如果不进行编码的话,python的urllib2直接处理会报错,我们可以先将中文转换成utf-8编码,然后使用urllib2.quote方法对参数进行url编码后传递. content = u'你好 jb51.net' content = content.encode('utf-8') content = urllib2.quote(content) api_url =

  • python爬虫之requests库的使用详解

    目录 python爬虫-requests库的用法 基本的get请求 带参数的GET请求: 解析json 使用代理 获取cookie 会话维持 证书验证设置 超时异常捕获 异常处理 总结 python爬虫-requests库的用法 requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多,requests 允许你发送 HTTP/1.1 请求.指定 URL并添加查询url字符串即可开始爬取网页信息等操作 因为是第三方库,所以使用前需要cmd安装 pip install

  • Python爬虫获取页面所有URL链接过程详解

    如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL. 什么是Beautiful Soup? Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能.它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序. Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换

  • Python爬虫之requests库基本介绍

    目录 一.说明 二.基本用法: 总结 一.说明 requests是一个很实用的Python HTTP客户端库,爬虫和测试服务器响应数据时经常会用到,requests是Python语言的第三方的库,专门用于发送HTTP请求,使用起来比urllib简洁很多. Requests 有这些功能: 1.Keep-Alive & 连接池2.国际化域名和 URL3.带持久 Cookie 的会话4.浏览器式的 SSL 认证5.自动内容解码6.基本/摘要式的身份认证7.优雅的 key/value Cookie8.自

  • 离线安装python的requests库方法

    目录 前言 1.下载安装包 1.1 检查requests模块所需依赖包 1.2 下载requests所需依赖包 1.3 下载requests包 2.安装 2.1 安装requests所需依赖包 2.2 安装requests 3.检查是否安装成功 总结 前言 本文详细记录了在win7中离线安装python requests的过程,包括安装requests所需依赖包. 环境:win7.python3.8.9(win7中可安装的最新python版本).无法连接互联网 1.下载安装包 1.1 检查req

  • python3中requests库重定向获取URL

    前言: 有时候 我们抓取一些页面,发现一些url 有重定向, 返回 301 ,或者302 这种情况. 那么我们如何获取真实的URL呢? 或者跳转后的URL呢? 这里我使用 requests 作为演示 假设我们要访问 某东的电子商务网站,我只记得网站好像是 http://jd.com import requests def request_jd(): url = 'http://jd.com/' #allow_redirects= False 这里设置不允许跳转 response = reques

  • python中requests库+xpath+lxml简单使用

    python的requests 它是python的一个第三方库,处理URL比urllib这个库要方便的多,并且功能也很丰富. [可以先看4,5表格形式的说明,再看前面的] 安装 直接用pip安装,anconda是自带这个库的. pip install requests 简单使用 requests的文档 1.简单访问一个url: import requests url='http://www.baidu.com' res = requests.get(url) res.text res.statu

  • python中requests库安装与使用详解

    目录 前言 1.Requests介绍 2.requests库的安装 3.requests库常用的方法 4.response对象的常用属性 5.使用requests发送get请求 5.1  不带参数的get请求 5.2 带参数的get请求 5.2.1 查询参数params 5.2.2 SSL证书认证参数 verify 5.2.3 设置超时时间 timeout 5.2.4 代理IP参数 proxies 5.3 获取JSON数据 5.4 获取二进制数据 6.使用requests发送post请求 7.使

  • Python中requests库的基本概念与具体使用方法

    目录 一. 基本概念 1. 简介 2. 获取 3. http 协议 3.1 URL 3.2 常用 http 请求方法 二. 使用方法 1. 基本语法 2. 具体使用方法 2.1 get 2.2 post 2.3 response 2.4 head 2.5 put 总结 一. 基本概念 1. 简介 requests 模块是 python 基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测

  • python中requests库session对象的妙用详解

    在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也会在同一个session实例发出的所有请求之间保持cookies. 举个栗子,跨请求保持cookies,在命令行上输入下面命令: # 创建一个session对象 s = requests.Session() # 用session对象发出get请求,设置cookies s.get('http://ht

  • Python3 利用requests 库进行post携带账号密码请求数据的方法

    如下所示: import urllib,json,requests url = 'http://127.0.0.1:8000/account/login' headers = {} data = {'username':'asd','pwd':'123456$'} request = requests.post(url=url, data=data,json=True,headers=headers) response = request.content.decode() #需要携带请求头信息的

  • Python2和Python3中urllib库中urlencode的使用注意事项

    前言 在Python中,我们通常使用urllib中的urlencode方法将字典编码,用于提交数据给url等操作,但是在Python2和Python3中urllib模块中所提供的urlencode的包位置有些不同. 对于Python2 Python2中提供了urllib和urllib2两个模块. urlencode方法所在位置为: urllib.urlencode(values) # 其中values为所需要编码的数据,并且只能为字典 例如模拟登陆CSDN网站,示例程序如下 import url

  • 对python3中pathlib库的Path类的使用详解

    用了很久的os.path,今天发现竟然还有这么好用的库,记录下来以便使用. 1.调用库 from pathlib import 2.创建Path对象 p = Path('D:/python/1.py') print(p) #可以这么使用,相当于os.path.join() p1 = Path('D:/python') p2 = p1/'123' print(p2) 结果 D:\python\1.py D:\python\123 3.Path.cwd() 获取当前路径 path = Path.cw

  • mac下给python3安装requests库和scrapy库的实例

    众所周知,Mac自带python2,但无奈我们想使用新版本,因此我们需要安装python3 安装python3我使用了homebrew,网上也有很多教程,这里不多说 为python3安装第三方库其实也很简单,在安装python3之后,系统自动安装了pip3 因此我们只需要每次使用pip3即可安装成功 安装requests库: pip3 install requests 安装scrapy库: pip3 install Scrapy #注意S大写 既可! 以上这篇mac下给python3安装requ

  • python3中datetime库,time库以及pandas中的时间函数区别与详解

    1介绍datetime库之前 我们先比较下time库和datetime库的区别 先说下time 在 Python 文档里,time是归类在Generic Operating System Services中,换句话说, 它提供的功能是更加接近于操作系统层面的.通读文档可知,time 模块是围绕着 Unix Timestamp 进行的. 该模块主要包括一个类 struct_time,另外其他几个函数及相关常量. 需要注意的是在该模块中的大多数函数是调用了所在平台C library的同名函数, 所以

随机推荐