Парсинг профиля Linkedin с использованием Puppeteer Nodejs
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-код выглядит следующим образом:
Этот метод не очень эффективен, медленный и требует больших ресурсов, но это самый простой способ получить динамический контент.