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

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

Чем нужно парсить страницу чтобы получить точные данные Вот ссылка на пример страницы Вот 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 Куратор тега 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 комментарий
Веб-скрапинг динамического контента с 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.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии ( 0 ):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2024 Русаков Михаил Юрьевич. Все права защищены.
Как парсить динамические web — сайты с помощью Python 3?
В общем с задачей справился, возникло одно НО и заключается оно в следующем, некоторые сайты при использовании:
requests.get(‘url’)
отдают не весь код страницы, как я понял дело в том, что часть кода генерируется javascript.
как получить полный код страницы?
По возможности приведете примеры кода реализующие получение всего кода с web-страницы
P.S.: Помогите пожалуйста, четвертую ночь в компании с Гуглом я не вынесу 🙁
- Вопрос задан более трёх лет назад
- 23518 просмотров
1 комментарий
Оценить 1 комментарий

Открыть эту страницу в инспекторе обозревателя и посмотреть откуда скрипты грузят недостающие элементы страницы, и дальше грузить их вручную дополнительными запросами.
Решения вопроса 0
Ответы на вопрос 4
Я Иcпользую связку Selenium и PhantomJs илиChrome
Он предварительно рендерит страницу dв браузере,что позволяет парсить любые динамические страницы.
Пример парсинга Ютуба
from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.youtube.com/results?search_query=" + "guitar+lessons") results = driver.find_elements_by_xpath('//div[@class="yt-lockup-content"]') print(len(results)) for result in results: video = result.find_element_by_xpath('.//h3/a') title = video.get_attribute('title') url = video.get_attribute('href') print("<> (<>)".format(title, url)) driver.quit()
Guitar Lessons for Beginners in 21 days #1 | How to play guitar for beginners (https://www.youtube.com/watch?v=orp7WHibnaU) GuitarLessons.com (https://www.youtube.com/user/guitarlessonscom) Play TEN guitar songs with two EASY chords | Beginners first guitar lesson (https://www.youtube.com/watch?v=Jg-BRpn38L8) . more