Casper.js在通过Python脚本激活时无法打开JSON文件
我有一个用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()