py小bai 2021-06-25 09:46 采纳率: 81.3%
浏览 82
已采纳

python爬虫报错,jsonp

描述:爬取动态加载的网站,目标url存在于js中,用jsonp来封装的; 问题:直接爬取可以获得text,但是用json解析就报错,如下 Traceback (most recent call last): File "C:\Users\zhaorl\Desktop\python\0525上午.py", line 20, in res=json.loads(str(res)) File "C:\Python\lib\json_init_.py", line 346, in loads return _default_decoder.decode(s) File "C:\Python\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "C:\Python\lib\json\decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

爬取代码: import requests import json headers={ 'Host': 'xyq.cbg.163.com', 'Referer': 'https://xyq.cbg.163.com/cgi-bin/xyq_overall_search.py?act=show_overall_search_yuanshen', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36' } params={ 'callback': 'Request.JSONP.request_map.request_0', '_': '1624582691785', 'act': 'recommd_by_role', 'page': '1', 'attr_type': 'zongshang', 'count': '15', 'search_type': 'overall_search_yuanshen', 'view_loc': 'overall_search' } url='https://xyq.cbg.163.com/cgi-bin/recommend.py' res=requests.get(url=url,headers=headers,params=params) res=json.loads(str(res)) print(res.text)

  • 写回答

3条回答 默认 最新

  • 江天暮雪丨 2021-06-25 17:43
    关注

    参数callback去掉

    import requests
    import json
    
    headers = {'Host': 'xyq.cbg.163.com',
               'Referer': 'https://xyq.cbg.163.com/cgi-bin/xyq_overall_search.py?act=show_overall_search_yuanshen',
               'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
                             'Chrome/72.0.3626.121 Safari/537.36'}
    # params = {'callback': 'Request.JSONP.request_map.request_0', '_': '1624582691785', 'act': 'recommd_by_role',
    #           'page': '1', 'attr_type': 'zongshang', 'count': '15', 'search_type': 'overall_search_yuanshen',
    #           'view_loc': 'overall_search'}
    
    params = {'_': '1624582691785', 'act': 'recommd_by_role',
              'page': '1', 'attr_type': 'zongshang', 'count': '15', 'search_type': 'overall_search_yuanshen',
              'view_loc': 'overall_search'}
    url = 'https://xyq.cbg.163.com/cgi-bin/recommend.py'
    res = requests.get(url=url, headers=headers, params=params).json()   #  此处添加.json()
    # res = json.loads(res)
    print(res)
    
    # result:
    # {'msg': '请输入验证码!', 'status': 3, 'server_time': 1624614077246}
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法