我正在尝试将URI数组从我的php发送到我的python scraper。该数组包含要抓取的链接。
我从here获得了示例,并且可以很好地发送整数数组,但是当我尝试使用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 sys
import json
def jsontoarray(json_data):
data = json.loads(json_data)
print(json.dumps(data))
jsontoarray(sys.argv[1])
print(data)
IDE的结果
Traceback (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 None
json.decoder.JSONDecodeError: Expecting value: line 1 column 3 (char 2)
NULL
Process finished with exit code 0
答案 0 :(得分:0)
如here所述,出现错误的原因如下:
json.decoder.JSONDecodeError:预期值:第1行第3列(字符2)
可以是:
因此,根据您所拥有的内容,我敢打赌存在编码问题。
检查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])