Парсинг википедии при помощи Selenium

Простой парсер википедии с помощью Selenium

В этой статье мы попрактикуемся и рассмотрим, как использовать Selenium для извлечения подзаголовков со страницы Wikipedia.

Работать наш парсер будет следующим образом:

  • Указываем страницу википедии с которой будем работать.
  • Из нее парсим все подзаголовки.
  • Все спаршенные подзаголовки сохраняем в файл и завершаем работу.

Пошаговый гайд

1. Импорт необходимых библиотек:
Перед началом импортируем все необходимые библиотеки.

from selenium import webdriver
from selenium.webdriver.common.by import By

2. Определение URL:
Укажите URL страницы Wikipedia, которую вы хотите проанализировать.

URL = 'https://ru.wikipedia.org/wiki/Python'

3. Инициализация и запуск браузера:
Для этого используется WebDriver. Мы будем использовать ChromeDriver.

driver = webdriver.Chrome()
driver.get(URL)

4. Поиск подзаголовков:
В Wikipedia подзаголовки обычно находятся внутри тегов h2 и h3, но также могут быть другие уровни заголовков.

subheaders_h2 = driver.find_elements(By.CSS_SELECTOR, 'h2 .mw-headline')
subheaders_h3 = driver.find_elements(By.CSS_SELECTOR, 'h3 .mw-headline')
all_subheaders = subheaders_h2 + subheaders_h3

5. Извлечение текста из найденных элементов:
Преобразуем элементы в текст.

subheader_texts = [subheader.text for subheader in all_subheaders]

6. Завершение работы с браузером:
После того как мы собрали все данные, закроем браузер.

driver.quit()

7. Сохранение данных в файл:
Сохраняем подзаголовки в текстовый файл.

with open('subheaders.txt', 'w', encoding='utf-8') as file:
    for subheader in subheader_texts:
        file.write(subheader + '\n')

Полный код парсера

from selenium import webdriver
from selenium.webdriver.common.by import By

# Указываем URL страницы в Википедии
URL = 'https://ru.wikipedia.org/wiki/Python'  # Пример

# Инициализируем веб-драйвер Chrome
driver = webdriver.Chrome()

# Открываем страницу по указанному URL
driver.get(URL)

# Находим все подзаголовки на странице Википедии.
# В Википедии подзаголовки часто находятся в тегах с тегами h2, h3 и так далее.
subheaders_h2 = driver.find_elements(By.CSS_SELECTOR, 'h2 .mw-headline')
subheaders_h3 = driver.find_elements(By.CSS_SELECTOR, 'h3 .mw-headline')

# Объединяем найденные подзаголовки
all_subheaders = subheaders_h2 + subheaders_h3

# Сохраняем текст каждого подзаголовка в список
subheader_texts = [subheader.text for subheader in all_subheaders]

# Закрываем браузер
driver.quit()

# Сохраняем подзаголовки в файл
with open('subheaders.txt', 'w', encoding='utf-8') as file:
    for subheader in subheader_texts:
        file.write(subheader + '\n')

print("Подзаголовки сохранены в 'subheaders.txt'")

Заключение

Теперь у вас есть основные навыки для использования Selenium в целях парсинга. Этот метод может быть адаптирован для различных задач и простых сайтов.

Содержание: