如何将 URI 数组从 php 发送到 python 并在那里打印

我正在尝试将 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 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


GCT1015
浏览 216回答 1
1回答

holdtom

正如这里所说,出现错误的原因如下:json.decoder.JSONDecodeError:期望值:第 1 行第 3 列(字符 2)可:不符合 JSON 的引用XML/HTML 输出(即以 < 开头的字符串),或不兼容的字符编码所以根据你所拥有的,我敢打赌存在编码问题。查看您的 PHP 文件并确保它是 UTF-8 编码的。检查 Python 脚本文件编码,如果您在下面的文件行的开头添加以强制正确编码,那将会很好。# -*- coding: utf-8 -*-所以你的python文件看起来像:# -*- coding: utf-8 -*-import sysimport jsondef jsontoarray(json_data):&nbsp; &nbsp; data = json.loads(json_data)&nbsp; &nbsp; print(json.dumps(data))jsontoarray(sys.argv[1])另外为了调试,您可以打印以下类型sys.argv[1]:print(type(sys.argv[1]))你应该得到string或bytes(对于UTF-8)字符串。如果你有别的东西,你可以把它转换成字符串,比如:str(sys.argv[1])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python