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 听说你写代码没动力?本文就给你动力,爬取妹子图.如果 ...
随机推荐
- 【ORACLE】删除表空间,没有删除数据文件怎么办?解决办法
创建表空间 SQL> create tablespace TEST datafile='+DATA/rac/datafile/test01.dbf' size 1g; Tablespace cr ...
- ctfshow—web—web2
打开靶机,根据提示是SQL注入 打开后看到登录窗口 方法一.手工注入 抓取数据包 开始SQL注入测试 利用万能密码,登录成功 查看回显位置 查询数据库 查询数据库内数据表 如果想整齐一点显示可以添加g ...
- Inlook - 你的私人工作助理 V1.0.0.2
Inlook - Your personal assistant 中文版|English version Introduction Inlook是为在桌面上直观地提醒用户收到未读邮件和日程安排而开发的 ...
- 相对论中的光速c不变,这么讲!你总能理解了吧!
今天谈谈相对论的假设基础--光速不变,很多人都知道爱因斯坦的相对论,也知道相对论的理论基础是光速不变,即无论参考哪个参照系,光的速度都是不变的,这个很难得理解的问题.我之前看过别人的理解,也自己思考怎 ...
- vue3.0改变概况
一.slot API在render实现原理上的变化 二.全局API使用规范变化 三.Teleport添加 四.composition API变化 五.v-model变化
- 离线安装docker-ce
1.用一台可以连外网的虚拟机把docker-ce安装包下载下来,vim /tmp/docker-download.sh #!/bin/bash set -e mkdir -p /apps/docker ...
- Linux 技巧:让进程在后台运行更可靠的几种方法
Linux 技巧:让进程在后台运行更可靠的几种方法 https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/index.html 我们经常会碰到这 ...
- 隐性 URL 转发代码
隐性转发的优势体现于无需跳转和变动浏览器地址栏,即可实现转发. <!DOCTYPE html> <html lang="zh-CN"> <head&g ...
- 邮件解析 CNAME记录 A记录 NS记录 MX记录
域名配置 示例发信配置请至域名 service.i-test.cn DNS服务提供商处添加TXT记录,并保持SPF记录正确,否则会无法发信.*1.所有权验证类型 主机记录 主域名 记录值 状态TXT ...
- Coded UI
Coded UI Test是Visual Studio 2010对于Testing Project(测试工程)提供的关于UI自动化测试的框架,支持Win32,Web,WPF等UI的自动化测试,是一个非 ...