Как парсить динамические сайты на python
Перейти к содержимому

Как парсить динамические сайты на python

  • автор:

Веб-скрапинг динамического контента с Selenium и Python

Здравствуйте. В сегодняшней статье мы рассмотрим, как парсить некоторые динамические сайты при помощи Python и библиотеки Selenium. Многие современные сайты генерируют контент динамически или же имеют значения изменяющиеся в зависимости от условий. Парсинг подобных сайтов с помощью библиотеки bs4 может вызвать множестов проблем. Один из подходов заключается в том, чтобы имитировать взаимодействие пользователя на веб-сайте, прежде чем использовать bs4 для анализа интересующих вас элементов.

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

from bs4 import BeautifulSoup
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
import lxml
import time

link = r’https://www.cryptocompare.com/’
browser = webdriver.Chrome()
browser.get(link)

WebDriverWait(browser, 10).until(EC.presence_of_element_located(
(By.CLASS_NAME, «panel-body»)))
crypt_elements = browser.find_element(By.CLASS_NAME, ‘table-coins’)

prices_html = BeautifulSoup(crypt_elements.get_attribute(
‘innerHTML’), features=’lxml’).prettify()

# Затем вы можете разобрать price_html

# Вывод результата
print(prices_html)

# Запишем разметку в html файл
with open(«coins.html»,»w») as f:
print(prices_html, file=f)

# Базовый try catch для проверки ошибок.
except Exception as e:
print(e)

time.sleep(2)
# закрываем браузер после всех манипуляций
browser.quit()

Здесь .get_attribute(‘innerHTML’) используется для получения HTML выбранного элемента. Идея состоит в том, чтобы дождаться загрузки элементов браузером, найти интересующие вас элементы, а затем разобрать их через bs4 для получения окончательного результата.

Приведенный выше код извлекает цены один раз. Чтобы непрерывно получать цены, вы можете передать их через рекурсивный цикл.

Таким образом, мы попытались обработать динамический контент при помощи Selenium и bs4.

Создано 31.01.2023 12:32:37

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

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

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 0 ):

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2024 Русаков Михаил Юрьевич. Все права защищены.

    Как парсить динамический контент на сайте

    Это размеры одежды которые есть и те которых не осталось

    Есть некий контент на странице:

    Это размеры одежды которые есть и те которых не осталось

    Это код контента о размерах

    Чем нужно парсить страницу чтобы получить точные данные Вот ссылка на пример страницы Вот HTML код с страницы:

    И пожалуйста будьте добры укажите если я плохо задал вопрос. Я уверен что написал плохой вопрос и прошу прощение за это

    Отслеживать
    задан 23 мар 2023 в 16:16
    9 4 4 бронзовых знака
    playwright, selenium
    24 мар 2023 в 6:23

    Вы знаете другой способ подгрузки javascript? Ваш ответ не подходит под задачу мне нужно в бота вшить парсер @nexoma

    24 мар 2023 в 15:45

    причем здесь подгрузка яваскрипт? вам следует получить html-документ, распарсить его для получения требуемых html-элементов. если документ формируется динамически, то лучше это сделать через selenium. если документ статический то достаточно, например, requests. получить элементы можно как через xpath, так и с помощью css-selectors. вот ссылочки для начального знакомства dev-gang.ru/article/… habr.com/ru/post/250975 selenium-python.readthedocs.io/index.html по playwright найдёте сами.

    Парсинг динамического сайта на python?

    Имеется сайт: https://www.ifema.es/en/fitur/exhibitors-catalogue
    При скролле грида данные автоматически подгружаются. Их необходимо спарсить.
    В F12 -> Network, отправляется POST запрос с https://api.swapcard.com/graphql
    Как взаимодействовать с такой штукой и можно ли сформировать запрос на подгрузку всех данных в табличке?
    выручайте :

    • Вопрос задан более двух лет назад
    • 889 просмотров

    Комментировать

    Решения вопроса 1

    SoreMix

    soremix @SoreMix Куратор тега Python

    Обычные graphql запросы. viewId всегда одинаковый судя по всему
    endCursor возвращается при каждом запросе

    import requests data = []>,"extensions":>>] response = requests.post('https://api.swapcard.com/graphql', json=data).json() # парсим нужные данные тут end_cursor = response[0]['data']['view']['exhibitors']['pageInfo'].get('endCursor') while end_cursor: data = [],"endCursor":end_cursor>,"extensions":>>] response = requests.post('https://api.swapcard.com/graphql', json=data).json() # тут парсим нужные данные end_cursor = response[0]['data']['view']['exhibitors']['pageInfo'].get('endCursor')

    Ответ написан более двух лет назад

    Нравится 2 1 комментарий

    Продвинутый парсинг сайтов на Python

    — наш телеграм канал для Python разработчиков с лучшими примерами кода.

    В этой статье мы обсудим некоторые продвинутые техники веб-скрейпинга с помощью Python. Эти методы помогут вам спарсить сложные веб-сайты и избежать таких распространенных проблем, как CAPTCHA и блокировка IP-адресов.

    1.Парсинг динамических сайтов с JavaScript

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

    Одним из популярных инструментов является Selenium: https://selenium-python.readthedocs.io/. Selenium – это библиотека Python, которая позволяет управлять веб-браузером из кода. Это означает, что вы можете использовать Selenium для имитации поведения человека в браузере, что может помочь вам скреативить сайты, перегруженные JavaScript.

    Вот пример того, как использовать Selenium для сканирования веб-сайта, перегруженного JavaScript:

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *