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://www.boulanger.com/resultats?tr=samsung"
14 }
15 ],
16 "pageFunction": async function pageFunction(context) {
17 let data = {}
18 let userData = context.request.userData
19 data.url = context.request.url
20 data.label = userData.label
21
22 let items = await context.page.evaluate(() => {
23 const item = $('.product-item')
24
25 const itemInfo = item.map(function(i,elem) {
26 let obj = {}
27 obj.title = $(this).find('h2').text()
28 obj.sponsored = false
29 obj.price = $(this).find('.price__amount').text()
30 obj.img = $(this).find('img').attr('src')
31 obj.rank = i+1
32 return obj
33 }).get()
34
35 const itemSponsored = $('.rm-product')
36 const itemInfoSponsored = itemSponsored.map(function(i,elem) {
37 let obj = {}
38 obj.title = $(this).find('h2').text()
39 obj.sponsored = true
40 obj.price = $(this).find('.rm_price').text()
41 obj.img = $(this).find('img').attr('src')
42 obj.rank = i+1
43 return obj
44 }).get()
45
46
47 const allitems = itemInfoSponsored.concat(itemInfo)
48 return allitems
49 })
50
51 let itemsWithDataProp = items.map(obj => {
52 for(const key of Object.keys(data) ){
53 obj[key] = data[key]
54 }
55 return obj
56 })
57 return itemsWithDataProp;
58 },
59 "proxyConfiguration": {
60 "useApifyProxy": true,
61 "apifyProxyGroups": [
62 "RESIDENTIAL"
63 ],
64 "apifyProxyCountry": "FR"
65 }
66};
67
68
69const run = await client.actor("anchor/boulanger").call(input);
70
71
72console.log('Results from dataset');
73console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
74const { items } = await client.dataset(run.defaultDatasetId).listItems();
75items.forEach((item) => {
76 console.dir(item);
77});
78
79