Casper.js在通过Python脚本激活时无法打开JSON文件

1 投票
1 回答
992 浏览
提问于 2025-04-17 22:36

我有一个用CasperJS写的脚本,它会打开一个包含搜索词的JSON文件,并在网页上查找这些词。直接在命令行运行的时候,一切都很正常。

var casper = require('casper').create();
var fs = require('fs')
var names = fs.read('/var/www/html/tracker/names.json');
...

但是,当我通过一个用Python写的shell脚本来运行它时,它就读不到这个JSON文件了。fs.read返回的是"",也就是空字符串。

这个Python脚本是:

app = subprocess.Popen("/usr/local/bin/casperjs /var/www/html/tracker/scraper.js", shell=True)
app.wait()
out, errs = app.communicate()

1 个回答

0

我搞明白了。其实,这是我自己犯的低级错误。

在提问的时候没有说明清楚,但这个Python脚本首先会准备好一个叫 names.json 的文件,然后再通过一个子进程运行抓取程序。所以如果我们在上面的代码片段中加一点东西:

# Save JSON file
f = open('names.json', 'w')
f.write( json.dumps(json_ready, sort_keys=True, indent=4) )

# Query scraper
app = subprocess.Popen("/usr/local/bin/casperjs /var/www/html/tracker/scraper.js", shell=True)
app.wait()
out, errs = app.communicate()

问题是什么呢?我忘记关闭 f 了。

# Save JSON file
f = open('names.json', 'w')
f.write( json.dumps(json_ready, sort_keys=True, indent=4) )
f.close()

撰写回答