有一个很奇怪的问题。自 1-2 周以来,我无法在 Digital Ocean 上使用 PhantomJS 创建 Craigslist 页面的屏幕截图。有谁知道问题可能是什么以及为什么它不再起作用?
它以前一直运行良好,当我在笔记本上本地运行它时仍然运行良好。它会在 2-4 秒内创建屏幕截图。但是,在 Digital Ocean 上运行相同的程序(无论是在本地使用的特殊 Docker-Container 中还是直接安装在主机上)会一直加载,如果我幸运并等待足够长的时间,我会在大约 7 点后获得屏幕截图- 10+分钟。
在不同区域(SF 和法兰克福)的不同 Droplet(现有的和全新的)上尝试过,但总是有同样的问题。已经就此联系过 Digital Ocean。他们能够重现该问题,但据他们说,他们方面没有任何改变,因此也不知道是什么原因造成的。他们责怪 PhantomJS 或 Craigslist。
它可以很容易地复制。在新的 Droplet (Ubuntu 14.04) 上,以下代码将安装 PhantomJS:
# Install dependencies
sudo apt-get install -y libicu52 libjpeg8 libfontconfig libwebp5
# Install PhantomJS
cd /usr/local/share && \
curl -L -O https://github.com/bprodoehl/phantomjs/releases/download/v2.0.0-20150528/phantomjs-2.0.0-20150528-u1404-x86_64.zip && \
unzip phantomjs-2.0.0-20150528-u1404-x86_64.zip && \
ln -s /usr/local/share/phantomjs-2.0.0-20150528/bin/phantomjs /usr/local/bin/phantomjs
一个非常基本的示例脚本,用于在 craigslist 上创建产品的屏幕截图。包含以下内容的名为“test-screenshot.js”的文件:
var page = require('webpage').create();
var url = 'http://vancouver.craigslist.ca/van/ctd/5148995470.html';
page.open(url, function() {
page.render('craigslist.png');
phantom.exit();
});
运行脚本:“phantomjs test-screenshot.js”。
谢谢!