Hunter2077 2022-03-15 09:33 采纳率: 100%
浏览 58
已结题

网页请求URL内容只有部分响应中内容这是为什么?

img

这是打开qq音乐 network网页请求URL的内容 我想要从响应中获取网页中歌曲名,但是我写完代码发现返回的值只有部分。
完整部分应该是这样的

img


这有啥解决办法吗?

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2022-03-15 09:42
    关注

    data中包含中文,post数据的时候需要调用encode编码下数据,不能直接post,改下面就可以了。而且由于搜索需要登录才能用,所以要附加上登录后的cookie请求头,其他头可以不需要。而且注意数据节点位置
    改下面就行了

    import requests
     
    headers = {'cookie':'pgv_pvi=8068807680; pgv_pvid=3148864639; RK=yUpAV2ICOK; ptcz=d942d8b68ecf2bbb5c631d8e483497f82a2383a6095115a2ef111d8b4b5961bb; pac_uid=1_155132206; iip=0; o_cookie=155132206; _ga=GA1.2.1287171002.1616477719; tvfe_boss_uuid=e03f06df4ca157b5; fqm_pvqid=e058d838-0783-4c5b-9192-d4cf8537465f; ts_uid=9533016972; fqm_sessionid=e14a85d6-fe2c-4a18-9fc6-7a34e7f3d5e5; pgv_info=ssid=s189196696; ts_last=y.qq.com/n/ryqq/search; _qpsvr_localtk=0.8821454753758016; login_type=1; wxopenid=; psrf_qqunionid=2DE541C9DAC816AB6FF21AE742464678; psrf_qqopenid=1481FDF15C80502E4B93ECDACF6517F7; psrf_qqrefresh_token=7081037E1B58739C39F70B6A50FB29D6; psrf_musickey_createtime=1647410156; wxrefresh_token=; wxunionid=; euin=oK4koKoAowns; tmeLoginType=2; psrf_qqaccess_token=0566E694A28A706BC7ABBA6FA3DC611C; uin=155132206; qm_keyst=Q_H_L_5t1rW3C28iWXqJC9X4YBNDgF__SlVLUddxnxCf1VGLN0bHYjNrag04w; psrf_access_token_expiresAt=1655186156; qm_keyst=Q_H_L_5t1rW3C28iWXqJC9X4YBNDgF__SlVLUddxnxCf1VGLN0bHYjNrag04w; qqmusic_key=Q_H_L_5t1rW3C28iWXqJC9X4YBNDgF__SlVLUddxnxCf1VGLN0bHYjNrag04w'
    }
    data ='{"comm":{"cv":4747474,"ct":24,"format":"json","inCharset":"utf-8","outCharset":"utf-8","notice":0,"platform":"yqq.json","needNewCode":1,"uin":155132206,"g_tk_new_20200303":1446837834,"g_tk":1446837834},"req_1":{"method":"DoSearchForQQMusicDesktop","module":"music.search.SearchCgiService","param":{"remoteplace":"txt.yqq.top","searchid":"57966588075123225","search_type":0,"query":"周杰伦","page_num":1,"num_per_page":10}}}'
     
    url = 'https://u.y.qq.com/cgi-bin/musics.fcg?_=1647411323421&sign=zzbafd2829ekt6qco6tn9kb5dtdowz84g30315e4d'
    res = requests.post(url,data=data.encode('utf-8'),headers=headers)
    json_music = res.json()
    #print(json_music)
    list_music = json_music['req_1']['data']['body']['song']['list']
    # list_music是一个列表,music是它里面的元素
    for music in list_music:
        # 以name为键,查找歌曲名
        print(music['name'])
        # 查找专辑名
        print('所属专辑:'+music['album']['name'])
        # 查找播放时长
        print('播放时长:'+str(music['interval'])+'秒')
        # 查找播放链接
        print('播放链接:https://y.qq.com/n/yqq/song/'+music['mid']+'.html\n\n')
     
     
     
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月23日
  • 已采纳回答 3月16日
  • 创建了问题 3月15日

悬赏问题

  • ¥15 根据历年月数据,用Stata预测未来六个月汇率
  • ¥15 DevEco studio开发工具 真机联调找不到手机设备
  • ¥15 请教前后端分离的问题
  • ¥100 冷钱包突然失效,急寻解决方案
  • ¥15 下载honeyd时报错 configure: error: you need to instal a more recent version of libdnet
  • ¥15 距离软磁铁一定距离的磁感应强度大小怎么求
  • ¥15 霍尔传感器hmc5883l的xyz轴输出和该点的磁感应强度大小的关系是什么
  • ¥15 vscode开发micropython,import模块出现异常
  • ¥20 Excel数据自动录入表单并提交
  • ¥30 silcavo仿真,30分钟,只需要代码
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部