【问题标题】:Pass scraped item as json to a PHP script将抓取的项目作为 json 传递给 PHP 脚本
【发布时间】:2013-07-13 22:59:15
【问题描述】:

所以我想将我抓取的项目传递给一个 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 只看到一个长度为 7 的字符串 {title:,如果我将 toPHP 替换为 item['title'],那么 php 端会看到 [usomewhere only we know],我真正想传递给 php 的是一个字符串,如: {'title': [u'somewhere only we know']} 或只是 {'title': ['somewhere only we know']},当然还有我的项目包含的所有其他字段,我该怎么做?

谢谢,

【问题讨论】:

    标签: php python json scrapy


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 2012-08-19
      • 1970-01-01
      • 2022-11-21
      • 2015-11-27
      • 1970-01-01
      • 2013-06-18
      相关资源
      最近更新 更多