0

有一个很奇怪的问题。自 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”。

谢谢!

4

1 回答 1

1

似乎 Craigslist 故意减慢来自 Digital Ocean IP 的流量。在 DC 区域,当我使用托管在 Digital Ocean 的 VPN 时,CL 主页需要 55 秒以上的时间才能加载。如果没有 VPN,加载时间是正常的(< 1000 毫秒)。其他站点通过 VPN 正常工作。

我认为这是对他们最近涉及其网站抓取工具的诉讼的技术回应。

于 2015-08-21T18:38:07.920 回答