-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathindex.js
More file actions
42 lines (34 loc) · 1.25 KB
/
index.js
File metadata and controls
42 lines (34 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// NPM Plugins
const fs = require('fs')
const decodeEntities = require('decode-entities')
const cheerio = require('cheerio')
const chalk = require('chalk')
// Start scraping
let rawHtml = fs.readFileSync('./raw/LinkedIn.htm').toString()
let $ = cheerio.load(rawHtml)
let searchString = 'code[id^="bpr"]:contains("fs_wvmpCard")'
let data = JSON.parse(decodeEntities($(searchString).html()))
// Write extracted data json to separate file
fs.writeFileSync('./raw/data.json', JSON.stringify(data, null, 2), 'utf-8')
// Show user data
function showUser(userData) {
return `${chalk.yellow(userData.firstName)} ${chalk.yellow(decodeEntities(userData.lastName))}
${chalk.blue(userData.occupation)}
URL: https://www.linkedin.com/in/${userData.publicIdentifier}/
`
}
// Start itterating through object
let objects = Object.keys(data.included).length
let no = 0
console.log(`
${chalk.blue('---------------------------------------------------------')}
${chalk.yellow('Display hidden LinkedIn profile views')}
by Vladimir Jovanović <vladimir@bitersen.com>
${chalk.blue('---------------------------------------------------------')}
`)
for (let i = 0; i < objects; i++) {
if (data.included[i].firstName) {
no += 1;
console.log(`${no}. ${showUser(data.included[i])}`)
}
}