【发布时间】:2014-04-22 14:59:12
【问题描述】:
我正在尝试从 Web 服务中抓取一些 URL,它运行良好,但我需要从同一个 Web 服务中抓取大约 10,000 个页面。
我通过创建多个 phantomJS 进程来做到这一点,它们每个都打开并评估不同的 URL(它是相同的服务,我只更改网站 URL 中的一个参数)。
问题是我不想一次打开 10,000 个页面,因为我不希望他们的服务崩溃,我也不希望我的服务器崩溃。
我正在尝试创建一些打开/评估/插入ToDB ~10 页的逻辑,然后休眠 1 分钟左右。
假设这就是我现在拥有的:
var numOfRequests = 10,000; //Total requests
for (var dataIndex = 0; dataIndex < numOfRequests; dataIndex++) {
phantom.create({'port' : freeport}, function(ph) {
ph.createPage(function(page) {
page.open("http://..." + data[dataIncFirstPage], function(status) {
我想在中间的某个地方插入类似的东西:
if(dataIndex % 10 == 0){
sleep(60); //I can use the sleep module
}
在我尝试放置 sleepJS 的每个地方,程序都会永远崩溃/冻结/循环...
知道我应该尝试什么吗?
我尝试将上面的代码放在 for 循环之后的第一行,但这不起作用(可能是因为正在等待触发的回调函数..)
如果我将它放在phantom.create() 回调中也不起作用..
【问题讨论】:
标签: node.js web-scraping phantomjs sleep