@@ -101,32 +101,50 @@ npm install x-crawl
101
101
102
102
## 示例
103
103
104
- 每天自动获取 bilibili 国漫主页的轮播图片为例 :
104
+ 每天自动获取 bilibili 首页、国漫、电影这三个页面的轮播图片为例 :
105
105
106
106
``` js
107
107
// 1.导入模块 ES/CJS
108
108
import xCrawl from ' x-crawl'
109
109
110
110
// 2.创建一个爬虫实例
111
- const myXCrawl = xCrawl ({ intervalTime: { max: 3000 , min: 2000 } })
111
+ const myXCrawl = xCrawl ({
112
+ maxRetry: 3 ,
113
+ intervalTime: { max: 3000 , min: 2000 }
114
+ })
112
115
113
116
// 3.设置爬取任务
114
117
// 调用 startPolling API 开始轮询功能,每隔一天会调用回调函数
115
118
myXCrawl .startPolling ({ d: 1 }, async (count , stopPolling ) => {
116
- // 调用 crawlPage API 爬取 Page
117
- const res = await myXCrawl .crawlPage (' https://www.bilibili.com/guochuang/' )
118
- const { page } = res .data
119
+ // 调用 crawlPage API 爬取 首页、国漫、电影 这三个页面
120
+ const res = await myXCrawl .crawlPage ([
121
+ ' https://www.bilibili.com' ,
122
+ ' https://www.bilibili.com/guochuang' ,
123
+ ' https://www.bilibili.com/movie'
124
+ ])
119
125
120
- // 设置请求配置,获取轮播图片的 URL
121
- const requestConfigs = await page .$$eval (' .chief-recom-item img' , (imgEls ) =>
122
- imgEls .map ((item ) => item .src )
123
- )
126
+ // 存放图片 URL
127
+ const imgUrls: string [] = []
128
+ const elSelectorMap = [' .carousel-inner img' , ' .chief-recom-item img' , ' .bg-item img' ]
129
+ for (const item of res) {
130
+ const { id } = item
131
+ const { page } = item .data
132
+
133
+ // 获取页面轮播图片元素的 URL
134
+ const urls = await page .$$eval (elSelectorMap[id - 1 ], (imgEls ) =>
135
+ imgEls .map ((item ) => item .src )
136
+ )
137
+ imgUrls .push (... urls)
138
+
139
+ // 关闭页面
140
+ page .close ()
141
+ }
124
142
125
143
// 调用 crawlFile API 爬取图片
126
- await myXCrawl .crawlFile ({ requestConfigs, fileConfig : { storeDir : ' ./upload ' } })
127
-
128
- // 关闭页面
129
- page . close ( )
144
+ await myXCrawl .crawlFile ({
145
+ requestConfigs : imgUrls,
146
+ fileConfig : { storeDir : ' ./upload ' }
147
+ } )
130
148
})
131
149
```
132
150
0 commit comments