这样做我可以毫无问题地使用代理
var proxies = fs.readFileSync('proxies.txt', 'utf-8').replace(/\r/gi, '').split('\n');
但是当我这样做
(function scrapeProxies() {
request.get('https://mezy.wtf/proxies.txt', (err, res, body) => {
proxies = body.split('\n');
setTimeout(() => scrapeProxies(), 2 * 60 * 1000);
});
无论我做什么,似乎都不起作用,给出错误
“ TypeError:无法读取null的属性'length'”
如果有人可以帮助我,这太好了,因为我对此很陌生,只是学习!谢谢。
这是我的代码,因为无法粘贴全部内容,因此无法在此处上传:
答案 0 :(得分:1)
以下应该根据您的代码工作
const scrapeProxies = () => {
request.get('https://mezy.wtf/proxies.txt', (err, res, body) => {
if (err) throw err;
proxies = body.replace(/\r/gi, '').split('\n');
setTimeout(() => scrapeProxies(), 2 * 60 * 1000);
})
};
scrapeProxies();
您的代码存在以下问题:
第一-您需要检查请求中是否有任何错误
if (err) throw err;
这意味着如果发现错误,它将引发异常。
2nd-用'\ n'分割后,数组中的每个字符串仍然具有'\ r',这就是为什么您需要像在第一个示例中一样将其替换为任何内容的原因。
body.replace(/\r/gi, '')
或者您可以直接用'\ r \ n'分割。
body.split('\r\n');