CoderCastrov logo
CoderCastrov
Selenium

Как парсить данные с GitHub с помощью Python

Как парсить данные с GitHub с помощью Python
просмотров
4 мин чтение
#Selenium

Добро пожаловать снова... GitHub, Inc. - это сервис хостинга для разработки программного обеспечения и контроля версий с использованием Git. Он предоставляет распределенный контроль версий Git, а также контроль доступа, отслеживание ошибок, запросы на добавление функций в программное обеспечение и многое другое, что известно каждому. Мы будем использовать Python, поэтому, если у вас нет опыта работы с Python, я рекомендую освежить свои знания этого языка.

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

Давайте начнем!

Базовое введение, которое можно пропустить, я скопировал из своей другой статьи

Прежде всего, нам понадобится установить Python, убедитесь, что у вас установлен Python и некоторая среда разработки. Selenium pro - это пакет для парсинга веб-страниц, который позволяет нам имитировать веб-браузер с помощью Python, возможно, лучше иметь более глубокое понимание парсинга веб-страниц. Пакет Selenium pro - https://pypi.org/project/selenium-pro/

pip install selenium-pro

Установка расширения

Скачайте Selenium Auto Code Generator из Chrome Web Store, вместо копирования и вставки XPath, этот инструмент помогает и упрощает процесс без хлопот с копированием и вставкой. Скачать можно здесь - https://chrome.google.com/webstore/detail/selenium-auto-code-genera/ocimgcpcnobcnmclomhhmjidgoiekeaf/related

Давайте начнем!

Теперь, когда мы настроили наше окружение Python, давайте откроем пустой скрипт Python. Давайте импортируем пакет Selenium pro, который вы, надеюсь, предварительно установили из предыдущего абзаца (просто выполните pip install selenium-pro). После установки импортируйте следующие пакеты:

from selenium_pro import webdriver
import time
from selenium_pro.webdriver.common.keys import Keys

Мы используем браузер Google Chrome в качестве нашего графического интерфейса, но вы можете использовать другие браузеры в Selenium pro, если хотите использовать другой браузер, делайте это! Убедитесь, что конкретный браузер установлен на вашем компьютере.

Теперь, внутри Selenium pro, нам нужно определить наш веб-браузер, давайте сделаем это с помощью следующей строки кода:

driver = webdriver.Start()

Я рекомендую запустить весь ваш код до этой точки и проверить, успешно ли выполняется код, если да, то вы почти готовы продолжать!

GitHub pipeline

Далее идет интересная часть, нажмите на расширение DK, которое мы установили ранее, и нажмите "начать запись". Это определенно не будет сложной задачей, но к счастью у вас есть я рядом.

Откройте веб-сайт GitHub, на котором уже выполнен вход в систему, и добавьте ожидание в течение 3 секунд, чтобы веб-сайт загрузился, а затем выполните поиск ключевого слова на веб-сайте и нажмите Enter. Чтобы добавить событие ожидания, щелкните правой кнопкой мыши на экране и выберите "ожидание" -> 3. Теперь, если вы нажмете на расширение, вы увидите, что код уже есть в расширении, как показано ниже.

# чтобы открыть URL в браузере
driver.get('https://github.com/search?q=')
time.sleep(3)

Отлично! Это указывает нашему браузеру Python Chrome открыть этот конкретный веб-сайт выше, функция "time.sleep(3)" просто говорит Python подождать 3 секунды перед продолжением, это необязательно, но я все равно добавил это.

После этого расширение будет искать идентификатор с помощью driver.find_element_by_pro и выполнит клик(), событие клика выполнит клик по идентификатору.

# чтобы нажать на поле ввода
driver.find_element_by_pro('ZwEc6FaDVHN8kGJ').click()

а send_keys('how') введет ключевое слово "shirt", а send_keys(Keys.ENTER) нажмет Enter.

# чтобы ввести текст в поле ввода
driver.find_element_by_pro('iFWzBfHLT6Gl7Mb').send_keys('how')
# нажать клавишу Enter
driver.switch_to.active_element.send_keys(Keys.ENTER)

Скопируйте код из расширения и протестируйте код до этого момента..

Получение данных

Отлично! Так что давайте продолжим запись, после ввода ключевого слова на веб-сайте sister jane, наведите курсор на заголовок продукта, а затем щелкните правой кнопкой мыши и выберите "Скопировать"->"Текст" для получения текста продукта.

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

# для получения текста элемента
заголовок = list_element.find_element_by_pro(‘JRTS6S1ACxSEI2H’).text
# для получения ссылки элемента
ссылка = list_element.find_element_by_pro(‘muxIoGUcWOcr9n5’).get_attribute(‘href’)
# для получения текста элемента
описание = list_element.find_element_by_pro(‘qyAWMesh41Z9bKt’).text
# для получения текста элемента
теги = driver.find_element_by_pro(‘eG5SQ6ObgaN48Y1’).text
# для получения текста элемента
лайки = list_element.find_element_by_pro(‘ZkqOBereyXlmnNb’).text

Мы закончили здесь..верьте или нет

from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
# открыть URL в браузере
driver.get('https://github.com/search?q=')
time.sleep(3)
# нажать на поле ввода
driver.find_element_by_css_selector('input[name="q"]').click()
# ввести текст в поле ввода
driver.find_element_by_css_selector('input[name="q"]').send_keys('как')
# нажать клавишу Enter
driver.switch_to.active_element.send_keys(Keys.ENTER)
# получить текст элемента
title = driver.find_element_by_css_selector('.repo-list-item h3 a').text
# получить ссылку элемента
link = driver.find_element_by_css_selector('.repo-list-item h3 a').get_attribute('href')
# получить описание элемента
description = driver.find_element_by_css_selector('.repo-list-item p').text
# получить количество отметок
likes = driver.find_element_by_css_selector('.repo-list-item .octicon-heart').text

Запуск этой программы

Чтобы запустить эту программу, скопируйте код из расширения и сохраните его как файл .py > откройте ваш терминал / командную строку и введите следующую команду:

python3 ПУТЬ/К/ВАШЕМУ/ФАЙЛУ.PY

Или, если вы используете среду разработки, такую как Pycharm, просто запустите программу в ней. Когда вы запустите эту программу, вы увидите, что открывается браузер Chrome, он будет ждать несколько секунд, а затем выведет точки данных в консоль Python!

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