CoderCastrov logo
CoderCastrov
Парсер

Парсинг веб-сайтов с использованием библиотеки Beautifulsoup и Selenium

Парсинг веб-сайтов с использованием библиотеки Beautifulsoup и Selenium
просмотров
2 мин чтение
#Парсер

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

Beautifulsoup - это библиотека Python, используемая для извлечения данных из HTML и XML. BeautifulSoup работает как парсер, разделяя компоненты HTML на последовательность элементов, которые легко читать.

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

Установка библиотек

pip install beautifulsoup4
pip install selenium webdriver-manager

Импорт библиотек Введите необходимые библиотеки:

import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

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

# URL для парсинга
url = "https://ews.kemendag.go.id/"
  
# Открытие Chrome
driver = webdriver.Chrome('./chromedriver') 
driver.get(url) 
  
# Убедитесь, что страница загружена
time.sleep(5) 
  
html = driver.page_source

Извлечение таблицы данных Таблица данных - это таблица, содержащая данные, используемые для анализа.

# Извлечение и разбор исходного кода
soup = BeautifulSoup(html, "html.parser")

# Проверка таблицы и используемого класса
print('Classes of each table:')
for table in soup.find_all('table'):
    print(table.get('class'))

# Создание списка со всеми таблицами
tables = soup.find_all('table')

# Поиск таблицы и используемого класса, и если найдено, результат будет помещен в переменную table
table = soup.find('table', class_="table table-sm table-hover Custom_table_morecondensed__LCSVD Beranda_font12__trzpg")

Создание фрейма данных Вставьте полученную таблицу данных с помощью Beautifulsoup в фрейм данных.

# Определение формы фрейма данных
df = pd.DataFrame(columns=['No', 'Комодитет','Единица измерения', 'Н.нач', 'Н.кон', 'Разница'])

# Сбор данных из таблицы
for row in table.tbody.find_all('tr'):    
    # Сбор данных из столбцов
    columns = row.find_all('td')
    
    if(columns != []):
        no = columns[0].text.strip()
        komoditas = columns[1].text.strip()
        satuan = columns[2].text.strip()
        awal = columns[3].text.strip()
        akhir = columns[4].text.strip()
        selisih = columns[5].text.strip()
        df = df.append({'No': no, 'Комодитет': komoditas, 'Единица измерения': satuan, 'Н.нач' : awal, 'Н.кон': akhir, 'Разница': selisih}, ignore_index=True)

  
driver.close() # Закрытие webdriver

Результат

Фрейм данных

Ссылки на источники:https://it.telkomuniversity.ac.id/web-scraping-pengertian-dan-fungsinya-dalam-pengambilan-data/https://www.geeksforgeeks.org/scrape-content-from-dynamic-websites/