第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Nodejs/nestjs:從我的多個(gè)爬蟲獲得 13 秒的響應(yīng)時(shí)間

Nodejs/nestjs:從我的多個(gè)爬蟲獲得 13 秒的響應(yīng)時(shí)間

哈士奇WWW 2021-11-04 16:02:47
我正在構(gòu)建一個(gè)類似于 Flipboard 簡(jiǎn)報(bào)移動(dòng)應(yīng)用程序的報(bào)紙應(yīng)用程序!使用 nodejs nestjs 框架。因此,我正在爬入多個(gè)網(wǎng)站以獲取數(shù)據(jù),最終我得到了一個(gè)數(shù)組,其中包含 60 多個(gè)項(xiàng)目,僅用于從每個(gè)網(wǎng)站收集的第一頁(yè),響應(yīng)時(shí)間在 10 到 15 秒之間,這對(duì)于僅 3 個(gè)網(wǎng)站來說是不可接受的?。?!!我搜索了這個(gè),我發(fā)現(xiàn) nestjs 提供了一個(gè)緩存服務(wù),緩存結(jié)果以 20 毫秒結(jié)束,這很棒,但是!我沒有使用任何類型的數(shù)據(jù)庫(kù),因?yàn)槲覜]有抓取數(shù)據(jù)!只是 iframe 的標(biāo)題和 URL我的問題是:如何對(duì)每頁(yè) 60 個(gè)項(xiàng)目進(jìn)行分頁(yè),并最終從我的爬蟲中發(fā)出對(duì)下一頁(yè)的新請(qǐng)求。第一個(gè)用戶將面臨每 6 小時(shí) 15 秒的響應(yīng)時(shí)間(我的緩存結(jié)束)那么如何讓服務(wù)器自動(dòng)緩存數(shù)據(jù)而不是等待請(qǐng)求爬蟲代碼:(我有 3 個(gè)類似的函數(shù),只是 CSS 選擇器發(fā)生了變化)async getArticlesFromTechWD(page: number) {    const html = await get('https://www.tech-wd.com/wd/category/news/page/' + page);    // Cheerio    let $ = load(html);    function formatingDate(date) {        let months = ["?????", "??????", "????", "?????", "????", "?????",            "?????", "?????", "??????", "??????", "??????", "??????"        ];        date = date.replace('?', '').split(' ');        const year = date[2];        const month = (months.indexOf(date[1]) + 1).toString().length == 1 ? '0' + (months.indexOf(date[1]) + 1) : (months.indexOf(date[1]) + 1)        const day = date[0];        return `${year}-${month}-${day}`;    }    const articles = $('#masonry-grid .post-element').map(function () {        return {            title: $('.thumb-title', this).text().trim(),            date: formatingDate($('.date', this).text().trim()),            url: $('.thumb-title a', this).attr('href'),            image: $('.slide', this).css('background-image').replace('url(', '').replace(')', '').replace(/\"/gi, ""),            src: 'www.tech-wd.com'        }    }).get();    return articles;}將所有爬蟲數(shù)據(jù)合并到一個(gè)數(shù)組中:async getAllArticles(page: number, size: number) {    const skip = size * (page - 1);    // First crawler ( has an optional page pram default is page 1 )    const unlimitTech = await this.getArticlesFromUnlimitTech();    // Second crawler ( has an optional page pram default is page 1 )    const tectWd = await this.getArticlesFromTechWD();    // Merge them and sorted by date ( DESC )    const all = unlimitTech.concat(tectWd).sort(() => Math.random() - 0.5);    return all;}
查看完整描述

2 回答

?
交互式愛情

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊

而不是一次一個(gè):


const unlimitTech = await this.getArticlesFromUnlimitTech();

const tectWd = await this.getArticlesFromTechWD();

您可以同時(shí)執(zhí)行以下兩項(xiàng)操作:


const [unlimitTech, tectWd] = await Promise.all([

  this.getArticlesFromUnlimitTech(),

  this.getArticlesFromTechWD()

])


查看完整回答
反對(duì) 回復(fù) 2021-11-04
?
一只甜甜圈

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊

訣竅是一次做多件事。開始您的所有請(qǐng)求,然后await在每個(gè)請(qǐng)求結(jié)束。至少你的時(shí)間聽起來像是在開始下一個(gè)請(qǐng)求之前等待每個(gè)請(qǐng)求完成。


查看完整回答
反對(duì) 回復(fù) 2021-11-04
  • 2 回答
  • 0 關(guān)注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)