302重定向、喜马音乐

# 重定向:

def redirect(url):

r = requests.get(url,params={‘chrome‘:‘utf-8‘, ‘q‘:‘666‘})   #allow_redirects=False

print(r.url, r.status_code, r.history)

redirect(‘http://www.so.com/s‘)

redirect(‘http://www.haosou.com/s‘)

*********************分割线*********************

# 重定向的应用场景:请求状态码为302的网址,从而获取以文件后缀结尾的真实下载网址

import requests,os  #下载酷我音乐

def downLoadKuwo(url):

r = requests.get(url).text

musicName = ‘:‘.join(r.split(‘title>‘)[1].split(‘-酷我音乐‘)[0].split(‘-‘)[:2][::-1])

musicID=url.split(‘?‘)[0].split(‘/‘)[-1]

redirectResult=requests.get(f‘http://antiserver.kuwo.cn/anti.s?format=aac|mp3\

&rid=MUSIC_{musicID}&type=convert_url&response=res‘)

#urllib2获取经若干次重定向的最终网址用r.geturl();而requests库默认重定向,无需再请求r.url

musicName=‘E:\music\\‘+musicName+‘.‘+redirectResult.url.split(‘.‘)[-1]

if not os.path.isdir(‘E:\music‘):os.mkdir(‘E:\music‘)

if not os.path.isfile(musicName):

with open(musicName,‘wb‘) as f: #with语法和iter_content()都是迭代器,避免内存耗尽

for chunk in redirectResult.iter_content(1024):   #f.write(redirectResult.content)

f.write(chunk)

downLoadKuwo(‘http://www.kuwo.cn/yinyue/97881‘)   #http://bd.kuwo.cn/yinyue/7746750

****************************************分割线****************************************

下载喜马拉雅FM的音乐:

import requests,re,os,json

headers={‘User-Agent‘: ‘Mozilla/5.0 Chrome/59‘}

def getAnchors():

anchors = []

for x in range(1,3):    #下载两页的主播人数

res=requests.get(‘http://www.ximalaya.com/dq/%s/‘ %x,headers=headers).text

anchors.extend(re.findall(‘href="(.+?)" hashlink title="(.+?)" class="discoverAlbum_title‘,res))

return anchors

def getAlbums():

for anchors in getAnchors():

path=‘E:\scrapyDownload\%s‘ %anchors[1]

if not os.path.exists(path): os.mkdir(path)

os.chdir(path)

res = requests.get(anchors[0], headers=headers).text    #主播的音频数只下1页

rule=‘(\d+?)" track_title="(.+?)" track_.+?([0-9-]+?)<.+?title="(\d+?)次‘

musicsDetails=re.findall(rule,res,re.S)

with open(‘%s.txt‘ %anchors[1],‘w‘,encoding=‘utf8‘) as f:

for x in musicsDetails:

f.write(json.dumps(x,ensure_ascii=False)+‘\n‘)

for x in musicsDetails[:4]: #音频挺多,每页选取前4个下载

js=‘http://www.ximalaya.com/tracks/%s.json‘ %x[0]

musicUrl=requests.get(js,headers=headers).json()[‘play_path_32‘]

with open(x[1].replace(‘?‘,‘‘)+‘.m4a‘,‘wb‘) as music:   #Win系统的文件名不能有?

music.write(requests.get(musicUrl,headers=headers).content)

if __name__ == ‘__main__‘:

getAlbums()

时间: 2024-10-13 23:54:07

302重定向、喜马音乐的相关文章

我给女朋友讲编程html系列(11)—网页重定向,301重定向,302重定向

虽然以前只在淘宝买东西,不过现在对其他电商也不排斥了,就比如京东吧,今天就以京东为例. 你在浏览器中输入“360buy.com”,看看发生了什么? 另外输入“jingdong.com”,再看看发生了什么?看看网址变了没有? 见证奇迹,请看下图: 不管你输入哪个网址,都会转到这个网址. 这其实叫“重定向”,那么怎么实现网站重定向呢? 任意新建一个网页,如a.html,名字随便叫,只要后缀是.html就行了.输入下面的html代码: <html> <head> <meta htt

Http状态码之:301、302重定向

概念 301 Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一.如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址.除非额外指定,否则这个响应也是可缓存的. 新的永久性的URI应当在响应的Location域中返回.除非这是一个HEAD请求,否则响应的实体中应当包含指向新的URI的超链接及简短说明. 如果这不是一个GET或者HEAD请求,因此浏览器禁止自动进行重定向,除非得到用户的确

301与302重定向的区别

1.什么是301转向?什么是301重定向? 301转向(或叫301重定向,301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址. 2.什么是302重定向? 302重定向又称之为302代表暂时性转移(Temporarily Moved ),英文名称:302 redirect. 也被认为是暂时重定向(temporary redirect),一条对网站浏览器的指令来显示浏览器被要求显示的不同的UR

302 重定向和网址劫持

一.介绍 302重定向又称之为302代表暂时性转移(Temporarily Moved ),英文名称:302 redirect. 也被认为是暂时重定向(temporary redirect), 一条对网站浏览器的指令来显示浏览器被要求显示的不同的URL,当一个网页经历过短期的URL的变化时使用.一个暂时重定向是一种服务器端的重定 向,能够被搜索引擎蜘蛛正确地处理. 二.302 重定向和网址劫持 从网址A 做一个302 重定向到网址B 时,主机服务器的隐含意思是网址A 随时有可能改主意,重新显示本

HTTP GET请求302重定向问题

1.问题描述 ① 在华为云服务器中搭建了java环境,并在tomcat中部署了一个空的web项目 ② 在此web项目中上传了一个名为:plugin_DTDREAM_LIVING_DEHUMIDIFIER_N20A3_a1JUeSqpS3D.zip的压缩文件,当时通过chrome浏览器访问连接: http://x.x.x.x:8002/plug/plugin_DTDREAM_LIVING_DEHUMIDIFIER_N20A3_a1JUeSqpS3D.zip可以下载到此文件 ③ 我在此linux服务

Python requests jira登录302重定向

总结一下自己在用Python requests库对jira进行的一个bug统计时,在登录遇到的问题,以前也遇到过登录302重定向的问题,那个时候用requests同样的方法没有获取到cookie,但是jira可以用requests获取到cookie,我也不知道怎么回事 网上百度了很多资料,好多都是用jira这个库来来统计的,但是我想自己用Python来写一下,以下做个记录, 1,首先了解一下接口登录大概的信息,看看jira登录时抓包的情况,我用的是谷歌F12 login.jsp接口详情如下,经试

网站后端_Python+Flask.0007.FLASK构造跳转之301跳转与302重定向?

构造地址: 说明: FLASK支持通过视图函数及传参来构造URL,而且未来修改URL可一次性修改,且默认构建会转义特殊字符和Unicode数据,这些工作不需要我们自己处理,且不仅支持在上下文中构造而且还支持在模版文件中构造 #!/usr/bin/env python # -*- coding: utf-8 -*- """ # # Authors: limanman # 51CTOBG: http://xmdevops.blog.51cto.com/ # Purpose: #

nginx支持缓存302重定向后的文件到本地

试想一下这样一个需求: 在使用nginx反向代理的时候,我们需要缓存从后端服务器拉取的内容,正常情况下,如果所需要的内容就在后端服务器上,那么很容易,使用nginx的 proxy_cache模块就能够实现缓存.但是有一种情况:内容没有在后端服务器上,而是从后端服务器返回了一个重定向地址,重定向到了第三方服务器, 那么这时候nginx缓存下来的内容就是不是我们需要的源内容了,而是一个只包含重定向链接的文件,那么我们如何应对这一情况呢? X-accel允许在nginx内部重定向到一个从后端服务器返回

302重定向

一.301和302 总的表现就是用户看到URL变成了一个新的 先说说301:永久重定向,这个就是输入不对的地址后,会提示一个新地址,这个地址可以从缓存获得(即通过看status code,可以发现后面写着from cache) 301重定向是永久的重定向,搜索引擎在抓取新的内容的同时也将旧的网址替换为了重定向之后的网址. 代码表现是这样: rewrite后面接上permenent就代表301跳 //把来自veryyoung.me的请求301跳到 www.veryyoung.me if ($hos