Koa2 + Mongo + 爬蟲 搭建 小說微信小程序(本地開發篇)---編碼時遇到的問題


更新於 2019-01-02node

利用 eggjs 重構了下此項目,有興趣的能夠參考看看,傳送門git


首先感謝做者的分享,很贊~,原文地址github

這裏記錄下編碼遇到的問題,這裏只針對 sever 進行了驗證。有一樣遇到問題的童鞋,能夠做爲參照~mongodb

本地環境:npm

  • Node: v10.13.0
  • OS: window 7
  • npm: 6.4.1

問題一(mongoose相關)segmentfault

問題描述:DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.mongoose

解決方案:ide

mongoose.connect(config.dbUri, {
  useCreateIndex: true,
  useNewUrlParser: true
})
或者
mongoose.set('useCreateIndex', true)
mongoose.connect(config.dbUri, { useNewUrlParser: true })

對應的源碼文件 kendou-book/book-server/server/database/init.js,涉及修改的代碼以下:post

...
+ var opts = {
+  useCreateIndex: true,
+  useNewUrlParser: true
+ };
- mongoose.connect(db);
+ mongoose.connect(db, opts);

問題描述:DeprecationWarning: collection.count is deprecated 編碼

解決方案:

底層的mongodb驅動程序已棄用.count()方法。您應該使用.estimatedDocumentCount()或.countDocuments()代替。

對應的源碼文件 kendou-book/book-server/server/tasks/runninng.js,涉及修改的代碼以下:

...
 // 激活爬數據 爲下一次服務
await taskBook(item.bookId)

let count = await Chapter.find({
  bookId: item.bookId
- }).count()
+ }).countDocuments()

問題二(puppetter 相關

問題描述:ERROR: Failed to download Chromium r588429! Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.

解決方案:

vi .npmrc

type puppeteer_download_host = https://npm.taobao.org/mirrors

yarn add puppeteer -D or npm i puppeteer --save-dev

問題描述:(node:19996) UnhandledPromiseRejectionWarning: TimeoutError: Navigation Timeout Exceeded: 30000ms exceeded

解決方案:
對應的源碼文件 kendou-book/book-server/server/crawler/book.js,涉及修改的代碼以下:

...
 console.log('bookkkk:', browser)
 const page = await browser.newPage()
 await page.goto(url, {
   waitUntil: 'networkidle2',
+  timeout: 3000000
 })

對應的源碼文件 kendou-book/book-server/server/crawler/chapter.js,涉及修改的代碼以下:

...
  const page = await browser.newPage()
  await page.goto(url, {
    waitUntil: 'networkidle2',
+  timeout: 3000000
  })

問題三(源碼瑕疵

問題描述:定義 book 的 schema 的時候,字段(author)拼寫錯誤

解決方案:

對應的源碼文件 kendou-book/book-server/server/database/schema/book.js,涉及修改的代碼以下:

...
- auhtor: {
  type: String
},
+ author: {
  type: String
},

對應的源碼文件 kendou-book/book-server/server/crawler/book.js,涉及修改的代碼以下:

...
let result = await page.evaluate(() => {
   return {
     headImg: document.querySelector('.story_cover_m62topxs img').getAttribute('src'),
     name: document.querySelector('.info_left_m62topxs h1').innerText,
-      auhtor: document.querySelector('.info_left_m62topxs h2 a').innerText,
+      auhtor: document.querySelector('.info_left_m62topxs h2 a').innerText,
     chapterNum: document.querySelectorAll('.cp_dd_m62topxs').length
   }
 })

參考連接:

mongoose相關

mongoose相關

puppetter安裝就踩坑-解決篇

相關文章
相關標籤/搜索