js爬虫怎样控制爬取速度

来源:undefined 2025-01-17 20:01:09 1046

JavaScript爬虫速度控制的关键在于合理运用setTimeout函数或Promise.then()方法,避免对目标服务器造成过大压力。 setTimeout允许您在指定毫秒数后执行函数,从而实现延迟。

以下示例展示了如何使用setTimeout控制爬虫速度:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

const axios = require(axios);

const cheerio = require(cheerio);

// 爬取函数

async function scrape(url) {

try {

const response = await axios.get(url);

const html = response.data;

const $ = cheerio.load(html);

//  提取所需数据

const data = $(selector).text(); //  替换selector为你的选择器

console.log(data);

return data;

} catch (error) {

console.error(`Error fetching ${url}:`, error);

return null;

}

}

// 主程序

async function main() {

const urls = [

https://example.com/page1,

https://example.com/page2,

https://example.com/page3,

// ...更多URL

];

for (let i = 0; i < urls.length; i++) {

const url = urls[i];

const data = await scrape(url);

if(data) {

// 处理提取的数据

}

await new Promise(resolve => setTimeout(resolve, 1000)); // 延迟1秒

}

}

main();

登录后复制

此代码使用axios获取网页内容,cheerio解析HTML。 setTimeout在每次爬取后引入1秒延迟(可根据需要调整)。 为了更好的错误处理,增加了对scrape函数返回值的检查。 使用async/await使得代码更易读。 记住替换selector为你的实际选择器。 请务必遵守目标网站的robots.txt协议,并尊重网站的服务器负载能力。

以上就是js爬虫怎样控制爬取速度的详细内容,更多请关注php中文网其它相关文章!

最新文章