mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-10-07 00:07:07 +00:00
website-scraper: Make Source.attr optional. Add more options. (#40137)
* Make `attr` optional. As per the defaults: https://github.com/website-scraper/node-website-scraper/blob/050cdd011231033477264df9f432a7925927575f/lib/config/defaults.js * Capitalize interface `Scrape` * Use `any[]` format for array * add missing semicolon * add line breaks between interfaces * convert to single quotes * remove `attr` for a test * add more options
This commit is contained in:
committed by
Nathan Shively-Sanders
parent
2861611bb2
commit
05926a90ea
Vendored
+15
-5
@@ -13,19 +13,23 @@ declare namespace websiteScraper {
|
||||
url: string;
|
||||
filename: string;
|
||||
}
|
||||
|
||||
interface SubDirectory {
|
||||
directory: string;
|
||||
extensions: string[];
|
||||
}
|
||||
|
||||
interface Source {
|
||||
selector: string;
|
||||
attr: string;
|
||||
attr?: string;
|
||||
}
|
||||
|
||||
interface RequestOptions {
|
||||
headers: request.Headers
|
||||
headers: request.Headers;
|
||||
}
|
||||
|
||||
interface Options {
|
||||
urls: Array<string | Url>;
|
||||
urls: (string | Url)[];
|
||||
directory: string;
|
||||
urlFilter?: (url: string) => boolean;
|
||||
filenameGenerator?: string;
|
||||
@@ -37,21 +41,27 @@ declare namespace websiteScraper {
|
||||
recursive?: boolean;
|
||||
maxDepth?: number;
|
||||
ignoreErrors?: boolean;
|
||||
maxRecursiveDepth?: number;
|
||||
requestConcurrency?: number;
|
||||
plugins?: object[];
|
||||
}
|
||||
|
||||
interface Resource {
|
||||
url: string;
|
||||
filename: string;
|
||||
assets: Resource[];
|
||||
}
|
||||
|
||||
interface Callback {
|
||||
(error: any | null, result: Resource[] | null): void;
|
||||
}
|
||||
interface scrape {
|
||||
|
||||
interface Scrape {
|
||||
(options: Options, callback: Callback): void;
|
||||
(options: Options): Promise<Resource[]>;
|
||||
}
|
||||
}
|
||||
|
||||
declare var websiteScraper: websiteScraper.scrape;
|
||||
declare const websiteScraper: websiteScraper.Scrape;
|
||||
|
||||
export = websiteScraper;
|
||||
|
||||
@@ -1,31 +1,33 @@
|
||||
import scraper = require("website-scraper");
|
||||
import scraper = require('website-scraper');
|
||||
|
||||
scraper({
|
||||
urls: [
|
||||
"http://nodejs.org/",
|
||||
{ url: "http://nodejs.org/about", filename: "about.html" },
|
||||
{ url: "http://blog.nodejs.org/", filename: "blog.html" }
|
||||
'http://nodejs.org/',
|
||||
{ url: 'http://nodejs.org/about', filename: 'about.html' },
|
||||
{ url: 'http://blog.nodejs.org/', filename: 'blog.html' },
|
||||
],
|
||||
directory: "/path/to/save",
|
||||
directory: '/path/to/save',
|
||||
subdirectories: [
|
||||
{ directory: "img", extensions: [".jpg", ".png", ".svg"] },
|
||||
{ directory: "js", extensions: [".js"] },
|
||||
{ directory: "css", extensions: [".css"] }
|
||||
{ directory: 'img', extensions: ['.jpg', '.png', '.svg'] },
|
||||
{ directory: 'js', extensions: ['.js'] },
|
||||
{ directory: 'css', extensions: ['.css'] },
|
||||
],
|
||||
sources: [
|
||||
{ selector: "img", attr: "src" },
|
||||
{ selector: "link[rel=\"stylesheet\"]", attr: "href" },
|
||||
{ selector: "script", attr: "src" }
|
||||
{ selector: 'img' },
|
||||
{ selector: 'link[rel="stylesheet"]', attr: 'href' },
|
||||
{ selector: 'script', attr: 'src' },
|
||||
],
|
||||
request: {
|
||||
headers: {
|
||||
"User-Agent":
|
||||
"Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 4 Build/JOP40D)\
|
||||
AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19"
|
||||
}
|
||||
}
|
||||
}).then(function(result) {
|
||||
console.log(result);
|
||||
}).catch(function(err) {
|
||||
console.log(err);
|
||||
});
|
||||
'User-Agent':
|
||||
'Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 4 Build/JOP40D)\
|
||||
AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19',
|
||||
},
|
||||
},
|
||||
})
|
||||
.then(function(result) {
|
||||
console.log(result);
|
||||
})
|
||||
.catch(function(err) {
|
||||
console.log(err);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user