所以我想将我的已删除项目传递给php脚本,我已经在我的管道中了:
class TalkPhpPipeline(object):
def process_item(self, item, spider):
toPHP = json.dumps(dict(item))
os.system( '/usr/bin/php script.php %s' % toPHP)
return item
和我的script.php
<? require_once('wp-config.php');
$string = $argv[1];
echo 'PHP see this ';
var_dump($string);
蜘蛛跟script.php说话很好,但是我的script.php只看到像{title:
这样的长度7,如果我用item['title']
替换为PHP,那么php端看到[usomewhere only we know]
,我真正想传递给php的是一个字符串,如:
{'title': [u'somewhere only we know']}
或仅{'title': ['somewhere only we know']}
,当然还有我的项目中包含的所有其他字段,我该怎么做?
谢谢,
答案 0 :(得分:1)
shell正在弄乱命令行中的引号。因此,使用允许您指定单个参数的不同函数(例如subprocess.call
):
subprocess.call(['/usr/bin/php', 'script.php', json.dumps(dict(item))])
请注意,除非JSON非常短,否则最好只是以不同的方式将其传递给PHP,例如通过管道,因为操作系统具有命令行长度限制。
在Python中,您可以使用subprocess.Popen
类将JSON传递给PHP脚本,该脚本可以使用fgets(STDIN)
检索JSON。