CoderCastrov logo
CoderCastrov
Парсер

Парсинг профиля Linkedin с использованием Puppeteer Nodejs

Парсинг профиля Linkedin с использованием Puppeteer Nodejs
просмотров
1 мин чтение
#Парсер

Linkedin использует JavaScript для отображения контента на своей странице, поэтому невозможно использовать парсер HTML, такой как beautifulsoup или scrapy в Python. По этой причине я использую браузер Chrome с включенным режимом без графического интерфейса.

Существует множество библиотек, которые можно использовать для подобной работы на Python и Nodejs, одной из которых является Puppeteer на Nodejs, а в Python - pyppeteer.

На этот раз я напишу код, используя JavaScript в Nodejs. Я выбрал Puppeteer из-за его простой установки, для установки Puppeteer нам нужно выполнить всего один шаг:

npm i puppeteer

Используйте поиск Google, чтобы получить URL-адрес профиля Linkedin

Чтобы упростить себе задачу, я использую оператор поиска Google, полная ссылка на него здесь: https://support.google.com/websearch/answer/2466433?hl=en

Поскольку я хочу найти профиль программиста Golang в Москве, я использую поиск следующего вида:

site:linkedin.com/in/ AND "Moscow" AND "golang developer"

Затем мне нужно преобразовать его в допустимый URL, чтобы я мог перейти непосредственно на страницу Google:

var str = encodeURIComponent('site:linkedin.com/in/ AND "Moscow" AND "golang developer"');
var googleurl = 'https://google.com/search?q=' + str;
console.log(googleurl)

тогда результат будет выглядеть так:

https://google.com/search?q=site%3Alinkedin.com%2Fin%2F%20AND%20%22Moscow%22%20AND%20%22golang%20developer%22

Затем из результатов поиска получаем URL-адрес профиля Linkedin, и мне нужно найти уникальный идентификатор каждого элемента HTML на странице Linkedin, чтобы я мог получить необходимую информацию. Это почти то же самое, что я делал в предыдущей статье: https://medium.com/@antoharyanto/dynamic-web-scraping-with-puppeteer-nodejs-b35676fd9169

И, наконец, JavaScript-код выглядит следующим образом:

Этот метод не очень эффективен, медленный и требует больших ресурсов, но это самый простой способ получить динамический контент.