CoderCastrov logo
CoderCastrov
Питон

Как использовать Selenium для парсинга данных с веб-сайта

Как использовать Selenium для парсинга данных с веб-сайта
просмотров
3 мин чтение
#Питон

Парсинг веб-сайтов стал неотъемлемой частью процесса веб-разработки. Он позволяет извлекать данные с веб-сайтов и использовать их для различных целей, таких как анализ или создание новых приложений. В Python есть ряд библиотек, которые можно использовать для парсинга веб-сайтов, включая BeautifulSoup и Scrapy. Однако, когда речь идет о парсинге динамических веб-сайтов, то есть таких, которые требуют взаимодействия пользователя для загрузки данных, может пригодиться библиотека Selenium.

В этой статье мы рассмотрим фрагмент кода, который демонстрирует, как использовать Selenium для парсинга данных с веб-сайта. Конкретно, мы рассмотрим, как извлечь информацию о странах мира с веб-сайта “https://www.scrapethissite.com/pages/simple/". Мы извлечем данные, такие как название страны, столица, население и площадь.

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

Объяснение кода

Давайте посмотрим на код:

from selenium import webdriver
import pandas as pd
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

# Установка пути к драйверу Chrome
serv_obj = Service("F:\Automation Testing\selenium\chromedriver.exe")

# Запуск Chrome с использованием драйвера
demo = webdriver.Chrome(service=serv_obj)

# URL, который мы хотим парсить
url = "https://www.scrapethissite.com/pages/simple/"

# Загрузка веб-сайта
demo.get(url)

Первое, что мы делаем, это импортируем необходимые библиотеки, включая Selenium и pandas, которые являются библиотеками для манипулирования данными. Мы также импортируем класс Service и By из модуля selenium.webdriver.chrome.service. Класс Service используется для настройки драйвера, а By используется для указания метода поиска элементов на странице.

Затем мы устанавливаем путь к драйверу Chrome, используя класс Service. Драйвер Chrome используется для взаимодействия с браузером Chrome. Затем мы запускаем Chrome, используя метод webdriver.Chrome() и передаем в него объект service.

Мы определяем URL, который мы хотим парсить, в данном случае это https://www.scrapethissite.com/pages/simple/". Наконец, мы загружаем веб-сайт, используя метод get() объекта demo.

Затем мы определяем серию списков, которые мы будем использовать для хранения данных, которые мы хотим извлечь. Код использует метод find_elements объекта веб-драйвера для поиска всех элементов, которые соответствуют указанному выражению XPath для каждой категории данных, которые мы хотим парсить. Затем извлекается текст каждого элемента и сохраняется в списке.

# Название страны
country_name = []
cn = demo.find_elements(By.XPATH, "//h3[@class='country-name']")

for country in cn:
    result = country.text
    country_name.append(result)


# Столица страны
country_capital = []
cc = demo.find_elements(By.XPATH, "//span[@class='country-capital']")
for capital in cc:
    result = capital.text
    country_capital.append(result)

# Население страны
country_population = []
cp = demo.find_elements(By.XPATH, "//span[@class='country-population']")
for population in cp:
    result = population.text
    country_population.append(result)

# Площадь страны
country_area = []
ca = demo.find_elements(By.XPATH, "//span[@class='country-area']")
for area in ca:
    result = area.text
    country_area.append(result)

После того, как мы извлекли все данные, мы можем использовать библиотеку pandas для создания фрейма данных с извлеченными данными и сохранения его в файл Excel.

df = pd.DataFrame({
    "Название страны": country_name,
    "Столица": country_capital,
    "Население": country_population,
    "Площадь (кв. км)": country_area
})
df.to_excel("WorldCountries.xlsx")

Вывод

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