我正在尝试将 URI 数组从我的 php 发送到我的 python 抓取工具。该数组包含要抓取的链接。我从这里得到了示例,它可以很好地发送整数数组,但是当我尝试使用 URI 填充数组时,出现了错误。php代码片段:$array = ["https://www.google.com/","https://www.google.com/","https://www.google.com/"];//$array = [1,2,3]; // This is worked fine$resultScript= system('python C:\xampp\htdocs\selenium\dummy.py ' .escapeshellarg(json_encode($array)));$resultData = json_decode($resultScript, true);var_dump($resultData);Python :import sysimport jsondef jsontoarray(json_data): data = json.loads(json_data) print(json.dumps(data))jsontoarray(sys.argv[1])print(data)结果来自我的 IDETraceback (most recent call last): File "C:\xampp\htdocs\selenium\dummy.py", line 8, in <module> jsontoarray(sys.argv[1]) File "C:\xampp\htdocs\selenium\dummy.py", line 6, in jsontoarray data = json.loads(json_data) File "C:\Users\PC2\AppData\Local\Programs\Python\Python36-32\lib\json\__init__.py", line 354, in loads return _default_decoder.decode(s) File "C:\Users\PC2\AppData\Local\Programs\Python\Python36-32\lib\json\decoder.py", line 339, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "C:\Users\PC2\AppData\Local\Programs\Python\Python36-32\lib\json\decoder.py", line 357, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from Nonejson.decoder.JSONDecodeError: Expecting value: line 1 column 3 (char 2)NULLProcess finished with exit code 0
1 回答
holdtom
TA贡献1805条经验 获得超10个赞
正如这里所说,出现错误的原因如下:
json.decoder.JSONDecodeError:期望值:第 1 行第 3 列(字符 2)
可:
不符合 JSON 的引用
XML/HTML 输出(即以 < 开头的字符串),或
不兼容的字符编码
所以根据你所拥有的,我敢打赌存在编码问题。
查看您的 PHP 文件并确保它是 UTF-8 编码的。
检查 Python 脚本文件编码,如果您在下面的文件行的开头添加以强制正确编码,那将会很好。
# -*- coding: utf-8 -*-
所以你的python文件看起来像:
# -*- coding: utf-8 -*-
import sys
import json
def jsontoarray(json_data):
data = json.loads(json_data)
print(json.dumps(data))
jsontoarray(sys.argv[1])
另外为了调试,您可以打印以下类型sys.argv[1]:
print(type(sys.argv[1]))
你应该得到string或bytes(对于UTF-8)字符串。如果你有别的东西,你可以把它转换成字符串,比如:
str(sys.argv[1])
添加回答
举报
0/150
提交
取消