LiuMingyang_lu 2024-04-12 11:47 采纳率: 0%
浏览 26

Json解析出现错误json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0),如何解决


# -*- coding:utf-8 -*-
#到入自动化模块
from DrissionPage import ChromiumPage
#导入正则表达式模块
import re
#导入json模块
import json
#打开浏览器
driver = ChromiumPage()
#导入csv模块
import csv
#创建文件对象
f = open('data.csv',mode='w',encoding='utf-8',newline='')
#访问网站
driver.get('https://www.taobao.com/')
#监听数据包https://h5api.m.taobao.com/h5/mtop.relationrecommend.wirelessrecommend.recommend/2.0/?jsv=2.6.2&appKey=12574478&t=1712820442576&sign=1f1f607f634259ed5e81986ca898be68&api=mtop.relationrecommend.wirelessrecommend.recommend
driver.listen.start('mtop.relationrecommend.wirelessrecommend.recommend')
#输入关键词/类
driver.ele('css:#q').input('键盘')
#进行点击搜索
driver.ele('css:.btn-search').click()
#设置延时
driver.wait(10)
#下拉网页到底
driver.scroll.to_bottom()
#等待数据包加载
resp =driver.listen.wait()
#获取响应数据
text = resp.response.body
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/8ad3fafd43244ad3acdf3c87dc60a10c.png "#left")

#解析json
info = re.findall('mtopjsonp\d+\((.*)',text)[0].replace(')','')
#转换数据类型
print(info)
json_data = json.loads('info')
#根据键值对取值,提取商品数据所在列表
items = json_data['data']['itemsArray']
#for循环遍历,提取商品西欧那些哦数据所在列表
for index in items:
    #提取数据保存字典中
    dit = {
        '名称': index['title'],
        '价格': index['priceWap'],
        '销量': index['realSales'],
    }
print(dit)

img

-

  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-12 11:47
    关注

    引自免费微信小程序:皆我百晓生

    在您提供的代码中,错误在于尝试将字符串变量'info'传递给json.loads()函数进行JSON解析,而不是实际的info变量。为了解决这个问题,你需要将找到的JSON字符串赋值给一个变量,然后使用这个变量调用json.loads()。以下是修复后的代码:

    # ... 其他代码 ...
    
    # 解析json
    info = re.findall('mtopjsonp\d+\((.*)', text)[0].replace(')', '')
    # 将找到的JSON字符串赋值给新的变量
    json_string = info
    # 转换数据类型
    print(json_string)
    # 使用正确的变量调用json.loads()
    json_data = json.loads(json_string)
    # 根据键值对取值,提取商品数据所在列表
    items = json_data['data']['itemsArray']
    # for循环遍历,提取商品相关信息数据所在列表
    for index in items:
        # 提取数据保存字典中
        dit = {
            '名称': index['title'],
            '价格': index['priceWap'],
            '销量': index['realSales'],
        }
        print(dit)
    

    这段代码应该能正确解析JSON数据并打印出商品信息。注意,确保你已经安装了DrissionPage库,如果没有,请使用pip install drissionpage命令进行安装。同时,如果你在运行代码时遇到其他错误,可能是因为网络请求、页面加载时间或其他因素导致的数据格式不正确。在这种情况下,你可能需要检查网页的响应数据是否符合预期的JSON格式,或者调整网络请求和页面加载的延迟时间。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月12日

悬赏问题

  • ¥15 angular项目错误
  • ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件