1import { ApifyClient } from 'apify-client';
2
3
4
5const client = new ApifyClient({
6 token: '<YOUR_API_TOKEN>',
7});
8
9
10const input = {
11 "startUrls": [
12 {
13 "url": "https://crawlee.dev/js"
14 }
15 ],
16 "globs": [
17 {
18 "glob": "https://crawlee.dev/js/*/*"
19 }
20 ],
21 "pseudoUrls": [],
22 "excludes": [
23 {
24 "glob": "/**/*.{png,jpg,jpeg,pdf}"
25 }
26 ],
27 "linkSelector": "a",
28 "respectRobotsTxtFile": true,
29 "pageFunction": async function pageFunction(context) {
30 const { page, request, log } = context;
31 const title = await page.title();
32 log.info(`URL: ${request.url} TITLE: ${title}`);
33 return {
34 url: request.url,
35 title
36 };
37 },
38 "proxyConfiguration": {
39 "useApifyProxy": true
40 },
41 "initialCookies": [],
42 "waitUntil": "networkidle",
43 "preNavigationHooks": `// We need to return array of (possibly async) functions here.
44 // The functions accept two arguments: the "crawlingContext" object
45 // and "gotoOptions".
46 [
47 async (crawlingContext, gotoOptions) => {
48 const { page } = crawlingContext;
49 // ...
50 },
51 ]`,
52 "postNavigationHooks": `// We need to return array of (possibly async) functions here.
53 // The functions accept a single argument: the "crawlingContext" object.
54 [
55 async (crawlingContext) => {
56 const { page } = crawlingContext;
57 // ...
58 },
59 ]`,
60 "customData": {}
61};
62
63
64const run = await client.actor("apify/camoufox-scraper").call(input);
65
66
67console.log('Results from dataset');
68console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
69const { items } = await client.dataset(run.defaultDatasetId).listItems();
70items.forEach((item) => {
71 console.dir(item);
72});
73
74