天天看点

学习记录:python json列表爬取

import requests
# 引用requests库
res_music = requests.get('https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=60997426243444153&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=%E5%91%A8%E6%9D%B0%E4%BC%A6&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=0')
# 调用get方法,下载这个字典
json_music = res_music.json()
# 使用json()方法,将response对象,转为列表/字典
list_music = json_music['data']['song']['list']
# 一层一层地取字典,获取歌单列表
for music in list_music:
# list_music是一个列表,music是它里面的元素
    print(music['name'])
    # 以name为键,查找歌曲名
    print('所属专辑:'+music['album']['name'])
    # 查找专辑名
    print('播放时长:'+str(music['interval'])+'秒')
    # 查找播放时长
    print('播放链接:https://y.qq.com/n/yqq/song/'+music['mid']+'.html\n\n')
    # 查找播放链接
           
import json
# 引入json模块
a = [1,2,3,4]
# 创建一个列表a。
b = json.dumps(a)
# 使用dumps()函数,将列表a转换为json格式的字符串,赋值给b。
print(b)
# 打印b。
print(type(b))
# 打印b的数据类型。
c = json.loads(b)
# 使用loads()函数,将json格式的字符串b转为列表,赋值给c。
print(c)
# 打印c。
print(type(c)) 
# 打印c的数据类型。
           

2019.12.24

json分享

今天有同学提问 【json】 相关的转换方法的疑问

具体是:

json.dumps( res )

json.loads( xxx )

res.json( )

当然其实json.后面还有接dump和load这两个单数(没有s)的形式的方法,但是几乎以后也很少用。所以先不管~

那么我们要开始解析一下,这三个都代表了什么

从语法上讲: .这个点儿前面的一部分,都是对象,点儿后面都是对象绑定的方法

但是json本身是一个模块,所以之前是需要先导入这个模块的。即import json

而res是requests.get()的响应这个对象本身,所以如果直接点儿json(),是它自带的方法,不需要导入json模块

就像我们的列表对象,自带append方法,我们就不用导入了。

那么我们就介绍分析功能了

字面意思:dumps是卸载, loads是装载。

卸载 就是将 python原始类型 格式化成 json字符

装载 就是将 json字符串 解码成 python原始类型

回过头来,看看res = requests.get(url) 这个返回值res是什么? 是一个【response对象】,我们需要把它的内容转变为【字典】

所以要装载成字典,才可以层级访问。res.json()就是装载

所以小结一下效果: json.loads( res ) == res.json( ),都是将response对象,转换成可以访问的字典格式

复制运行以下代码

import requests,json
# 引用requests库
res_music = requests.get('https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=60997426243444153&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=%E5%91%A8%E6%9D%B0%E4%BC%A6&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=0')
# 调用get方法,下载这个字典
```python
json_music1 = res_music.json()
json_music2 = json.loads(res_music.text)

print(type(json_music1))
print(type(json_music2))

           
学习记录:python json列表爬取
学习记录:python json列表爬取

继续阅读