我们打开qq音乐的网址:https://y.qq.com/
然后输入 周杰伦, 点击搜索;
再打击歌词那一项,F12打开控制台,打开如下:
然后你就会发现, 这右边的MusicJsonCallback8040753716748157不就是我们需要的吗?
ok,直接复制黏贴进我们的代码。jsonpCallback:
MusicJsonCallback8040753716748157,完美!
然后右键这一个文件, 选择 复制该网址, 把data里面的searchid 替换成网址上面的参数searchId,w 替换成你搜索的歌曲名;
最后一步, 看看你搜索的歌手有多少页, 周杰伦的是有20页, ok, 把mian函数改一下, 改成从1到20页的数据,全部爬下来;
-
#!/usr/bin/python
-
# -*- coding:utf
-8 -*-
-
import requests
-
import json
-
import pymongo
-
import time
-
-
def main(page):
-
print(page)
-
url =
'https://c.y.qq.com/soso/fcgi-bin/client_search_cp'
-
#这里数据只有三个是需要变的,分别是:jsonpCallback,w, searchid
-
data = {
'qqmusic_ver':
1298,
-
'remoteplace':
'txt.yqq.lyric',
-
'inCharset':
'utf8',
-
'sem':
1,
'ct':
24,
'catZhida':
1,
'p': page,
-
'needNewCode':
0,
'platform':
'yqq',
-
'lossless':
0,
'notice':
0,
'format':
'jsonp',
'outCharset':
'utf-8',
'loginUin':
0,
-
'jsonpCallback':
'MusicJsonCallback19507963135827455',
-
'searchid':
'98485846416392878',
-
'hostUin':
0,
'n':
10,
'g_tk':
5381,
't':
7,
-
'w':
'周杰伦',
'aggr':
0
-
}
-
-
headers = {
'content-type':
'application/json',
-
'User-Agent':
'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'}
-
r = requests.get(url, params = data, headers = headers)
-
time.sleep(
3)
-
#截取 第
35个字符到最后一个
-
text = r.text[
35:
-1]
-
#
print(text)
-
result = json.loads(text)
-
if result[
'code'] ==
0:
-
-
for list in result[
'data'][
'lyric'][
'list']:
-
item = {
-
'albumname': list[
'albumname'],
-
'content': list[
'content']
-
}
-
mongoInsert(item)
-
#
print (list)
-
#
print(item)
-
-
-
def mongoInsert(item):
-
#进入数据库存储
-
client = pymongo.MongoClient(host=
'localhost',port=
27017)
-
db = client.qqmusic
-
# item为指定集合名
-
collection = db.JayZhou
-
res = collection.insert(item)
-
print(res)
-
print(
'插入成功')
-
-
-
if __name__ ==
'__main__':
-
#页数最多为
20 ,根据歌手的歌曲多少决定
-
for i in
range(
1,
20):
-
main(i)
转载:https://blog.csdn.net/qq_36772866/article/details/105631466
查看评论