url list support

This commit is contained in:
2018-09-26 14:27:01 +08:00
parent 667bb49e0d
commit b7aaa2b7f3
2 changed files with 10 additions and 6 deletions

View File

@ -44,6 +44,7 @@ function extract(...args) {
function extract(itemsSelector:string, fieldSelectors:string[]) function extract(itemsSelector:string, fieldSelectors:string[])
function extract(itemsSelector:string, fieldSelectors:string[], url:string, from:number, to:number, interval:number) function extract(itemsSelector:string, fieldSelectors:string[], url:string, from:number, to:number, interval:number)
function extract(itemsSelector:string, fieldSelectors:string, url:string, pages:number[]) function extract(itemsSelector:string, fieldSelectors:string, url:string, pages:number[])
function extract(itemsSelector:string, fieldSelectors:string[], urls:string[])
## Examples: ## Examples:
---------------------------- ----------------------------

View File

@ -2,20 +2,23 @@
* Extract data from current tab / multiple urls. * Extract data from current tab / multiple urls.
* @param {string} itemsSelector items selectors for selecting items (data rows) * @param {string} itemsSelector items selectors for selecting items (data rows)
* @param {Array<string>} fieldSelectors fields selectors for selecting fields (data columns) under each item * @param {Array<string>} fieldSelectors fields selectors for selecting fields (data columns) under each item
* @param {string} url url template to generate urls by filling with page numers. * @param {...any} args url list / url templates, page numers, either [from, to, interval] or [...pages]
* @param {...number} args page numers, either [from, to, interval] or [...pages]
*/ */
function extract(itemsSelector, fieldSelectors, url, ...args) { function extract(itemsSelector, fieldSelectors, ...args) {
let urls = []; let urls = [];
if (url) { let listOrTempl = args.shift();
if (listOrTempl instanceof Array) {
urls = listOrTempl;
} else if (url) {
let urlTempl = listOrTempl;
if (args[0] instanceof Array) { if (args[0] instanceof Array) {
urls = args[0].map(p => url.replace("${page}", p)); urls = args[0].map(p => urlTempl.replace("${page}", p));
} else if (args.length >= 3) { } else if (args.length >= 3) {
let from = args.shift(); let from = args.shift();
let to = args.shift(); let to = args.shift();
let interval = args.shift(); let interval = args.shift();
for (let i = from; i <= to; i += interval) { for (let i = from; i <= to; i += interval) {
urls.push(url.replace("${page}", i)); urls.push(urlTempl.replace("${page}", i));
} }
} }
} }