CoderCastrov logo
CoderCastrov
Парсер

Парсинг профилей LinkedIn с использованием Selenium, BeautifulSoup и MongoDB с помощью Python: Раскрытие трендов и исследований

Парсинг профилей LinkedIn с использованием Selenium, BeautifulSoup и MongoDB с помощью Python: Раскрытие трендов и исследований
просмотров
5 мин чтение
#Парсер

Парсинг данных: Извлечение информации о профилях LinkedIn студентов ENSIAS

В современной эпохе науки о данных и технологий LinkedIn стал незаменимым инструментом для поиска работы и профессионалов, чтобы продемонстрировать свои навыки, достижения и связаться с другими в своих отраслях. С целью собрать ценные идеи о сфере науки о данных и навыках и опыте студентов ENSIAS, мы решили провести проект по анализу данных, используя LinkedIn в качестве источника данных.

Первым шагом в этом проекте был парсинг данных - извлечение информации из профилей LinkedIn 58 студентов ENSIAS. Для выполнения этой задачи мы использовали техники парсинга веб-страниц с использованием библиотек Python Selenium и Beautiful Soup (bs4). Эти библиотеки помогли нам автоматизировать процесс посещения профилей LinkedIn, извлечения соответствующей информации, такой как названия должностей, стаж работы и используемые технологии, и сохранения ее в структурированном формате (файл JSON).

JSON-модель:

{
    "basics": {
      "name": "",
      "label": "",
      "image": "",
      "email": "",
      "phone": "",
      "url": "",
      "summary": "",
      "location": {
        "countryCode": "",
        "address": ""
      },
      "profiles": [
        {
          "network": "",
          "username": "",
          "url": ""
        }
      ]
    },
    "work": [],
    "volunteer": [],
    "education": [
      {
        "institution": "",
        "area": "",
        "studyType": "",
        "startDate": "",
        "endDate": "",
        "score": "",
        "courses": []
      }
    ],
    "awards": [],
    "certificates": [],
    "publications": [],
    "skills": [
      {
        "name": "",
        "level": "",
        "keywords": []
      }
    ]
}

Парсинг данных позволил нам собрать огромное количество информации, которую было бы сложно получить вручную. Результаты этого процесса предоставили нам набор данных, которые мы могли использовать для дальнейшего анализа и получения идей. В следующем разделе мы более подробно рассмотрим аспект анализа данных нашего проекта.

Требования для парсинга:

import os, time 
from selenium import webdriver
from bs4 import BeautifulSoup


driver = webdriver.Chrome('chromedriver')

driver.get("https://www.linkedin.com/login/")

elementID = driver.find_element_by_id('username')
elementID.send_keys("")
elementID = driver.find_element_by_id('password')
elementID.send_keys("")
elementID.submit()

driver.get('https://www.linkedin.com/school/ecole-nationale-superieure-d-informatique-et-d-analyse-des-systemes/people/?educationEndYear=2021')

rep = 2 #определяет количество прокруток, достаточных для просмотра всей страницы
last_height = driver.execute_script("return document.body.scrollHeight")

Анализ данных

Вторая часть этого блога будет посвящена анализу данных с использованием MongoDB. MongoDB - это мощная база данных NoSQL, которая позволяет эффективно хранить и обрабатывать большие наборы данных. В этом проекте мы будем использовать функцию агрегации MongoDB для ответа на несколько вопросов о профилях студентов ENSIAS на LinkedIn.

Мы будем использовать Python и различные библиотеки анализа данных. Вот пример кода, демонстрирующего требования для части проекта, связанной с анализом данных:

from pymongo import MongoClient
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Подключение к серверу MongoDB
client = MongoClient()
# Выбор базы данных и коллекции, с которыми вы хотите работать
db = client.linkden
collection = db.profiles
# Загрузка данных в объект DataFrame библиотеки Pandas
df = pd.DataFrame(list(collection.find()))
# Использование Matplotlib и Seaborn для визуализации данных
sns.countplot(x="industry", data=df)
plt.show()

Этот код демонстрирует основной процесс подключения к базе данных MongoDB, загрузки данных в объект DataFrame библиотеки Pandas и визуализации данных с использованием Matplotlib и Seaborn.

Для выявления соответствующих тенденций и идей мы должны выполнить следующие задачи по анализу данных:

  • Класс A: > 20
  • Класс B: между 10 и 20
  • Класс C: < 10

Мы будем выполнять этот анализ данных с использованием библиотек Python pandas и numpy. Кроме того, мы будем сохранять собранные данные LinkedIn в базе данных MongoDB и извлекать их для анализа. Анализируя собранные данные, мы стремимся предоставить всестороннее понимание навыков и опыта студентов ENSIAS, а также то, как это может быть использовано для улучшения образовательных программ и карьерных возможностей.

Например, чтобы ответить на вопрос о 20 лучших навыках ученых-аналитиков данных, мы можем использовать следующую функцию агрегации MongoDB:

db.profiles.aggregate([
  {"$unwind":"$skills"},
  {"$group":
    {"_id":"$skills",
     "count":
      {"$sum":1}
    }
  },
  {"$sort":
    {"count":-1}
  },
  {"$limit":20}
])

Аналогично, чтобы найти количество профилей, владеющих как Python, так и R, мы можем использовать следующую функцию поиска MongoDB:

db.profiles.find({"skills":["Python","R"]}).count()

Важно отметить, что MongoDB также предоставляет другие функции, такие как update и delete, для изменения и удаления данных в базе данных. Эти функции полезны для поддержания качества данных в базе данных.

Используя MongoDB, мы смогли эффективно анализировать и извлекать ценные идеи из данных профилей LinkedIn студентов ENSIAS.

Пример для использования Python и MongoDB: анализ корреляции между количеством образования (количество образования) и количеством опыта работы.

from pymongo import MongoClient
import pandas as pd

# Подключение к базе данных MongoDB
client = MongoClient()
db = client.linkden
collection = db.profiles

# Выполнение конвейера агрегации
pipeline = [
    { "$group": {
        "_id": {"education": "$education"},
        "experience": {"$sum": { "$size": "$work" }},
        "education": {"$sum": 1}
    }},
    { "$sort": {"experience": -1}}
]
results = list(collection.aggregate(pipeline))

# Создание объекта DataFrame библиотеки Pandas из результатов
df = pd.DataFrame(results)

# Вычисление корреляции между образованием и опытом работы
correlation = df['education'].corr(df['experience'])
print(correlation)

Заключение

Третья и последняя часть блога будет посвящена результатам и выводам, полученным в результате анализа данных. Для получения информации из данных были использованы различные методы анализа данных, такие как агрегация и корреляционный анализ. В этом разделе мы рассмотрим результаты анализа и обсудим основные выводы.

Одним из вопросов, на которые мы пытались ответить, было определение топ-20 навыков дата-сайентистов, что было достигнуто с помощью функций "group by" и "sort" в MongoDB. Другим вопросом было категоризация должностей и навыков дата-сайентистов, которая была выполнена с использованием функции "aggregate". Кроме того, мы проанализировали корреляцию между годами обучения и трудоустройством и обнаружили положительную корреляцию между ними.

Еще одним результатом анализа были наиболее часто используемые технологии в карьере дата-сайентистов. Мы обнаружили, что Python и R являются наиболее часто используемыми технологиями, а среднее количество лет опыта составляет 5.

Наконец, мы также проанализировали корреляцию между академическими знаниями и карьерной мобильностью и обнаружили положительную корреляцию между ними.

В заключение, анализ данных предоставил нам ценные сведения о навыках, опыте и образовании дата-сайентистов. Эти выводы могут быть использованы для улучшения образовательных программ и карьерных возможностей, а также предоставляют ценную информацию для тех, кто заинтересован в карьере в области анализа данных.

Исходный код доступен на GitHub: ссылка


Ссылки

Вот несколько ссылок, которые вы можете использовать, чтобы узнать больше об этой теме: