簡單的node爬蟲練手,迴圈中的非同步轉同步

2021-08-07 19:26:51 字數 1902 閱讀 7303

看到網上一些基於node做的爬蟲專案,自己也想寫一下練手,正好同事需要各省市的資訊

node 安裝最新版 後面會用到async、await 

webstrom編輯器

新建reptitle資料夾 --> npm init (初始化工程)

入口 ,獲取該頁面所有的省市,記錄下省市名稱,及html位址

查詢省市下面的市區

依次爬取,略。。

1. **分析 

2.  因為http發起的請求是非同步,迴圈中的非同步函式不能按照想要的既定順序執行,所以我用es6、7中的promise async await 將非同步函式轉化成同步

let url = "";//初始url

let datasource = ;

/** * @method 生成檔案

* @param filename

* @param text

*/const createtxt =(filename,text) =>else

})})

};/**

* @method promise封裝http請求

* @method 獲取所有省

* @param initurl

* @returns

*/async function getprovince(initurl) );

//將函式引數放入佇列

suburlarray.push();

})});

//await的上下文async

// console.log(suburlarray)

for(let i=0;i);

//將函式引數放入佇列

let countryurl = url.replace(/.html/,"");

suburlarray.push();

});});

for(let j=0;j}

*/async function startcounty(url,suburl,proindex,cityindex));

let newurl = suburl.split(/\//)[0]+"/"+areaurl;

if(areaurl));

}});

});for(let i=0;i}

*/async function gettree(url,suburl,proindex,cityindex,countyindex));

let reurl = suburl.split(/\//)[0]+"/"+suburl.split(/\//)[1]+"/"+newurl;

if(newurl))

}});

});for(let i=0;i}

*/async function getjwh(url,suburl,proindex,cityindex,countyindex,areaindex));

"name",name)

});})

}getprovince(initurl);

node的簡單爬蟲

最近在學node,這裡簡單記錄一下。首先是在linux的環境下,關於node的安裝教程 我看的教程裡面還用來express框架 鍵入 npm install express registry 來安裝 這樣基本的環境就弄好了,裝好以後來建立專案,過程如下 1.隨便建乙個資料夾,比如說是lesson3 ...

node 簡單的爬蟲案例

cherrio模組 安裝cnpm install cherrio使用方法const cheerio require cheerio const cheerio.load h2.title text hello there h2 addclass welcome html request模組var r...

練手 Linq的迴圈

網上看到乙個的微博有個題目 題目簡單 尋找陣列 的元素在陣列 對應的 下乙個更大元素 給定兩個 沒有重複元素 的陣列 nums1 和 nums2 其中nums1 是 nums2 的子集。找到 nums1 中每個元素在 nums2 中的下乙個比其大的元素。nums1 中數字 x 的下乙個更大元素是指 ...