Python小练习批量爬取下载歌曲
import requests
import os headers={
'Cookie': '_ga=GA1.2.701818100.1612092981; _gid=GA1.2.748589379.1612092981; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1612092982; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1612094717; kw_token=ZALW965FXG',
'csrf': 'ZALW965FXG',
'Host': 'www.kuwo.cn',
'Referer': 'https://www.kuwo.cn/singer_detail/1600',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
}
if not os.path.exists('mics'):
os.mkdir('mics')
def Index(page):
# url ='https://www.kuwo.cn/api/www/artist/artistMusic?artistid=1600&pn='+ str(page) + '&rn=30&httpsStatus=1&reqId=9d0df070-63bc-11eb-8632-19dcd503126a'
url='https://www.kuwo.cn/api/www/artist/artistMusic?artistid=1600&pn='+ str(page) + '&rn=30&httpsStatus=1&reqId=50b03180-63ca-11eb-b714-332080487537' response = requests.get(url=url,headers=headers).json()
musicList = response['data']['list']
print(musicList)
for music in musicList:
rid=music['rid']
name=music['name']
musicSave(rid,name) def musicSave(rid,name):
# url='https://www.kuwo.cn/url?format=mp3&rid='+ str(rid) + '&response=url&type=convert_url3&br=128kmp3&from=web&t=1612094725726&httpsStatus=1&reqId=9a3777e1-63bc-11eb-8632-19dcd503126a'
url='https://www.kuwo.cn/url?format=mp3&rid='+ str(rid) + '&response=url&type=convert_url3&br=128kmp3&from=web&t=1612100615341&httpsStatus=1&reqId=50b38ce1-63ca-11eb-b714-332080487537'
response=requests.get(url=url,headers=headers).json()
mp3path=response['url']
print(mp3path)
data = requests.get(url=mp3path).content ***** # 文件存储
# a 追加 b进制读写(音乐文件是字节数据)
print(mp3path)
with open('mics\{}.mp3'.format(name),'ab') as f:
f.write(data)
print('{}.mp3已经下载完成',format(name)) for page in range(1,11):
Index(page)
1.地址,文件地址和播放地址需要抓取
2.'Cookie': 'csrf'网页刷新后需要更新,大量爬虫可以使用代理ip和伪造User-Agent,或者js逆向后续更新。
出现错误,data = requests.get(url=mp3path).content 五颗红星 原来哪里我添加headers后get不了导致失败,后面把headers去掉后就能用了
1.演示一下用免费代理ip爬虫
import urllib.request def creat_proxy_handler():
url="https://www.baidu.com"
# 添加代理
proxy_list=[
{"http":"60.168.207.219:9999"},
{"http":"58.23.67.208:9999"},
{"http":"42.7.28.217:9999"},
{"http":"61.145.49.177:9999"},
{"http":"36.250.156.78:9999"},
{"http":"36.248.133.145:9999"},
{"http":"42.56.238.117:9999"},
{"http":"36.249.119.34:9999"},
{"http":"58.22.177.60:9999"}
]
for proxy in proxy_list:
print(proxy)
# 遍历出来的ip创建处理器
# 代理处理器
proxy_handler=urllib.request.ProxyHandler(proxy)
#创建自己的opener
opener=urllib.request.build_opener(proxy_handler)
try:
# 拿着代理ip去发送请求
data = opener.open(url,timeout=1).read()
print("haha")
except Exception as e:
print(e) creat_proxy_handler()
带着cookie去自动登录
import urllib.request
from http import cookiejar
from urllib import parse
"""
直接获取 个人中心
1代码登录
2.自动带着cookies 1.代码登录
1.1登录的网址
login_url ='https://www.yaozh.com/login'
1.2登录的参数
1.3发送登录请求 2.代码带着cookes 访问
"""
login_url ='https://www.yaozh.com/login'
login_from_data={
"username":"xiaomaoera12",
"pwd":"lina081012",
"formhash":"89B42EA5FF",
"backurl":"https%3A%2F%2Fjob.yaozh.com%2FtopicComp%2F14"
}
# 1.3发送登录请求POST
cook_jar = cookiejar.CookieJar()
# 定义有添加cook功能的处理器
cook_hanlder = urllib.request.HTTPCookieProcessor(cook_jar)
# 根据处理器生成opener
opener = urllib.request.build_opener(cook_hanlder)
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',
}
login_str = parse.urlencode(login_from_data).encode("utf-8")
login_request= urllib.request.Request(login_url,headers=headers,data=login_str)
opener.open(login_request) center_url="https://www.yaozh.com/member/"
center_request = urllib.request.Request(center_url,headers=headers)
response = opener.open(center_url) data=response.read()
print(data)
with open('02cook.html','wb') as f:
f.write(data)
Python小练习批量爬取下载歌曲的更多相关文章
- 【python数据挖掘】批量爬取站长之家的图片
概述: 站长之家的图片爬取 使用BeautifulSoup解析html 通过浏览器的形式来爬取,爬取成功后以二进制保存,保存的时候根据每一页按页存放每一页的图片 第一页:http://sc.china ...
- 如何让程序像人一样的去批量下载歌曲?Python爬取付费歌曲
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 今天来教大家一个自动化爬虫的工具 selenium selenium Se ...
- 从0实现python批量爬取p站插画
一.本文编写缘由 很久没有写过爬虫,已经忘得差不多了.以爬取p站图片为着手点,进行爬虫复习与实践. 欢迎学习Python的小伙伴可以加我扣群86七06七945,大家一起学习讨论 二.获取网页源码 爬取 ...
- from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)
使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...
- 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...
- 爬虫新手学习2-爬虫进阶(urllib和urllib2 的区别、url转码、爬虫GET提交实例、批量爬取贴吧数据、fidder软件安装、有道翻译POST实例、豆瓣ajax数据获取)
1.urllib和urllib2区别实例 urllib和urllib2都是接受URL请求相关模块,但是提供了不同的功能,两个最显著的不同如下: urllib可以接受URL,不能创建设置headers的 ...
- Python登录豆瓣并爬取影评
上一篇我们讲过Cookie相关的知识,了解到Cookie是为了交互式web而诞生的,它主要用于以下三个方面: 会话状态管理(如用户登录状态.购物车.游戏分数或其它需要记录的信息) 个性化设置(如用户自 ...
- Python爬虫实例:爬取猫眼电影——破解字体反爬
字体反爬 字体反爬也就是自定义字体反爬,通过调用自定义的字体文件来渲染网页中的文字,而网页中的文字不再是文字,而是相应的字体编码,通过复制或者简单的采集是无法采集到编码后的文字内容的. 现在貌似不少网 ...
- Python 爬虫入门之爬取妹子图
Python 爬虫入门之爬取妹子图 来源:李英杰 链接: https://segmentfault.com/a/1190000015798452 听说你写代码没动力?本文就给你动力,爬取妹子图.如果 ...
随机推荐
- JavaScript入门-对象
js对象 本篇主要介绍js里如何创建对象,以及for循环访问对象的成员... 什么是对象? 对象,并不是中文里有男女朋友意思,它是从英文里翻译来的,英文叫[Object],目标,物体,物品的意思. 在 ...
- JVM 判断对象已死,实践验证GC回收
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 提升自身价值有多重要? 经过了风风雨雨,看过了男男女女.时间经过的岁月就没有永恒不变 ...
- let关键字:加强版的var关键字
本文首发于个人网站:let关键字:加强版的var关键字 你好,今天大叔想和你唠扯唠扯 ES6 新增的关键字 -- let.再说 let 的具体用法之前,大叔想先和你说说大叔自己对 let 的感受 -- ...
- [usaco2010 Oct]Soda Machine
题目描述 有N个人要去膜拜JZ,他们不知道JZ会出现在哪里,因此每个人有一个活动范围,只要JZ出现在这个范围内就能被膜拜, 伟大的JZ当然希望膜拜他的人越多越好,但是JZ不能分身,因此只能选择一个位置 ...
- 如何将1rpx转为1rem
最近我在开发的过程中,出现了一个需求,我需要把开发好的小程序倒模成H5页面,这里就涉及一个布局单位问题,我们小程序用的单位都rpx,是按照750rpx铺满整个页面来算的,可H5又不支持rpx单位,这里 ...
- 华为路由配置IPSec
用该方法配置后用抓包工具抓取的就看不到两个通讯点的IP,而显示的是加密点的IP. 原文:https://www.cnblogs.com/yangyang1988/p/11559819.html
- jQuery 真伪数组的转换
//真数组转换伪数组 var arr = [1,3,5,7,9]; var obj = {}; [].push.apply(obj,arr); console.log(obj) //伪数组转真数组 v ...
- elasticsearch从开始到永久
0.学习目标 独立安装Elasticsearch 会使用Rest的API操作索引 会使用Rest的API查询数据 会使用Rest的API聚合数据 掌握Spring Data Elasticsearch ...
- 主题模型(Topic)
消息队列 RocketMQ - 打造金融级消息服务 - 阿里云 https://www.aliyun.com/product/rocketmq 主题模型(Topic) 发布/订阅(Pub/Sub) 一 ...
- TCP半连接队列和全连接
概述 如上图所示, 在TCP三次握手中,服务器维护一个半连接队列(sync queue) 和一个全连接队列(accept queue). 当服务端接收到客户端第一次SYN握手请求时,将创建的req ...