Парсинг профилей LinkedIn с использованием Selenium, BeautifulSoup и MongoDB с помощью Python: Раскрытие трендов и исследований
Table Of Content
- Анализ данных
- Подключение к серверу MongoDB
- Выбор базы данных и коллекции, с которыми вы хотите работать
- Загрузка данных в объект DataFrame библиотеки Pandas
- Использование Matplotlib и Seaborn для визуализации данных
- Подключение к базе данных MongoDB
- Выполнение конвейера агрегации
- Создание объекта DataFrame библиотеки Pandas из результатов
- Вычисление корреляции между образованием и опытом работы
- Заключение
- Ссылки
Парсинг данных: Извлечение информации о профилях 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: ссылка
Ссылки
Вот несколько ссылок, которые вы можете использовать, чтобы узнать больше об этой теме: