1.緣起
原本的架構(gòu)介紹如下:
拾肆-NodeJS簡(jiǎn)單代理池(起)
然后今天為了做其他需要把這個(gè)完善一下。
2.配置文件
原本就沒用 ini 的配置文件存儲(chǔ)方式,所以就用一個(gè) JSON 文件存儲(chǔ)配置,其中代碼如下:
/**
*讀取配置文件并初始化。
*/
function funInit() {
//讀取配置文件
let strConfig = fs.readFileSync(path.join(__dirname, '/cfg.json'), { encoding: "utf-8" });
//文本轉(zhuǎn)為對(duì)象
let objConfig = JSON.parse(strConfig);
//應(yīng)用各種配置
let arrSaveSet = objConfig.saveSet;
let objWebCfg = objConfig.webCfg;
objCTLIO = new cControllerIO(arrSaveSet);
objCTSpy = new cControllerRequest(objWebCfg);
objTimeConfig = objConfig.timeConfig;
console.log(' 完成初始化 ');
funGoPro();
};
但 JSON 有一個(gè)壞處,就是無法注釋,只能增加多一個(gè)字段作為注釋。
//原本為:
"saveSet": [{
"libPath": "/IOEng/cIOMongodb.js",
"dbName": "dbProxy",
"host": "27017",
"user": "Berry",
"pw": "Berry",
"col": "tbProxy"
}, {
"libPath": "/IOEng //cIOJSON.js",
"file": "../../proxy.json"
}]
//新增一字段,把內(nèi)容寫到該內(nèi)容里面并作為字符改為:
"saveSet": [{
"libPath": "/IOEng/cIOMongodb.js",
"dbName": "dbProxy",
"host": "27017",
"user": "Berry",
"pw": "Berry",
"col": "tbProxy"
}],
"Comment": {
"ForsaveSet": ", {'libPath': '/IOEng //cIOJSON.js','file': '../../proxy.json'}"
}
3.保存時(shí)加入時(shí)間
原本保存的內(nèi)容只有兩個(gè)內(nèi)容:
ProxyContent:[
{
u:"119.101.118.126",
p:"9999"
}
]
現(xiàn)在需要增加保存時(shí)間為:
ProxyContent:[
{
u:"119.101.118.126",
p:"9999",
ft:1580267620322
}
]
4.修改檢測(cè)數(shù)據(jù)庫(kù)是否存在該代理
因?yàn)榍捌诖嫒?code>數(shù)據(jù)庫(kù)只存入代理地址、代理端口,故在新增字段之后是會(huì)檢測(cè)不到存在的,所以只能修改為查找數(shù)據(jù)庫(kù)時(shí)只查找地址以及端口,以針對(duì) MongoDB 的驅(qū)動(dòng)為例,修改一下:
//修改前
checkProxyExist(objProxy = {}, funCB) {
....
db.collection(that.dbSet.col).findOne(objProxy, {}, function(err, item) {
....
};
//修改后
checkProxyExist(objProxy = {}, funCB) {
....
db.collection(that.dbSet.col).findOne({ u: objProxy.u, p: objProxy.p }, {}, function(err, item) {
....
};
5.修改循環(huán)流程
原本的流程圖為:

原始的流程圖
更改后的流程圖:

好像很復(fù)雜
6.修改這個(gè)算是完成了吧
測(cè)試好像還需要一段時(shí)間,就先整理一下今天要做的事情:
- 把前期做的代理池修改一下
- 在騰訊云服務(wù)器上配置PM2
- 找尋 Python 爬蟲相關(guān)包及方法
- 思考關(guān)鍵字輿情該怎么保存
- 吃個(gè)好早餐