【发布时间】:2020-01-12 17:45:58
【问题描述】:
我有一个带有POST 端点的快速服务器,它启动了一个爬虫。当爬虫完成时,它会关闭整个服务器。难道我做错了什么?我怎样才能防止它发生?
项目看起来像这样:
// server.js
const express = require('express')
const bodyParser = require('body-parser')
const startSearch = require('./crawler.js')
const app = express()
app.use(bodyParser.json())
app.post('/crawl', async (req, res) => {
const { foo, bar } = req.body
startSearch({ foo, bar })
res.end()
})
app.listen(PORT, () => console.log(`listening on port ${PORT}`))
// crawler.js
const Apify = require('apify')
const startSearch = ({ foo, bar }) => {
Apify.main(async () => {
const sources = [{
url: 'https://path_to_website.com',
userData: { foo, bar }
}]
const requestList = await Apify.openRequestList(null, sources)
const crawler = new Apify.PuppeteerCrawler({
requestList,
handlePageFunction: async ({ request, page }) => {
// do things using puppeteer
}
}
})
await crawler.run()
})
}
【问题讨论】:
-
避免使用
Apify.main()。详情见stackoverflow.com/questions/56977763/… -
是的!那行得通。谢谢!随意回答,我会验证它。即使这是重复的,我认为保留这个问题是有价值的。我永远不会仅仅通过阅读问题来阅读您发送给我的链接,因为我没有在 Google Cloud 中做任何事情
标签: javascript node.js express apify