From 667bb49e0d97292142272755314266ba0fce2520 Mon Sep 17 00:00:00 2001 From: jebbs Date: Fri, 21 Sep 2018 12:10:15 +0800 Subject: [PATCH] extract attributes & improve help --- popup/tip.html | 18 ++++++++---------- scripts/content.js | 33 ++++++++++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/popup/tip.html b/popup/tip.html index 9d95c00..941f391 100644 --- a/popup/tip.html +++ b/popup/tip.html @@ -35,27 +35,25 @@
-
Examples
+
Quick Start
+

+ View Help: +
extract() +

Extract current page: -
extract("table tr", ["td:nth-child(0)","td:nth-child(1)"]) +
extract("list-item", ["a.title", "p.content"])

- Extract pages of sample.com (1-10, interval 1): -
extract("table tr", ["td:nth-child(0)","td:nth-child(1)"],"http://sample.com/?pn=${page}",1,10,1) + Extract multiple pages (1-10, interval 1): +
extract("list-item", ["a.title", "p.content"], "http://sample.com/?pn=${page}", 1, 10, 1)

-

- Extract specified pages (1,3,5): -
extract("table tr", ["td:nth-child(0)","td:nth-child(1)"],"http://sample.com/?pn=${page}",[1,3,5]) - -

-
diff --git a/scripts/content.js b/scripts/content.js index 01ea596..c7f5e81 100644 --- a/scripts/content.js +++ b/scripts/content.js @@ -25,17 +25,44 @@ function extractData(itemsSelector, fieldSelectors) { return $(itemsSelector).toArray().map( item => fieldSelectors.map( - cls => $(item).find(cls).toArray().map(find => find.textContent.trim()).join('\n') + selector => { + let [cls, attr] = selector.split('@').slice(0, 2); + return $(item).find(cls).toArray().map(find => attr ? find[attr] : find.textContent.trim()).join('\n') + } ) ); } function extract(...args) { - let sig = `Invalid call args. + let sig = ` +# DataExtracter Help +---------------------------- + +## Signitures: +---------------------------- 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, pages:number[])`; +function extract(itemsSelector:string, fieldSelectors:string, url:string, pages:number[]) + +## Examples: +---------------------------- + +### Extract current page +extract(".list-item", ["a.title", "p.content"]) + +### Extract multiple pages (1-10, interval 1) +extract(".list-item", ["a.title", "p.content"],"http://sample.com/?pn=\${page}", 1, 10, 1) + +### Extract specified pages (1,3,5) +extract(".list-item", ["a.title", "p.content"], "http://sample.com/?pn=\${page}", [1, 3, 5]) + +## Advanced Examples: +---------------------------- + +### Extract link text and target (use 'selector@attribute') +extract('.list-item', ['a.title', 'a.title@href']) +`.trim(); if (!testArgs(...args)) { console.log(sig); return;