rusyska55011
@rusyska55011

Python. Не могу спарсить тег цены в магазине «DNS». Можете помочь?

import requests
from bs4 import BeautifulSoup

def get_html(url):
    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
    r = requests.get(url, headers = headers)
    return r.text

def get_elements(html, tag, class_name):
    soup = BeautifulSoup(html, 'html.parser')
    pages = soup.find_all(tag, class_= class_name)
    return pages

class DNS():
    html = get_html('https://www.dns-shop.ru/catalog/17a899cd16404e77/processory/order=1&groupBy=none&brand=amd&stock=2')
    price = get_elements(html, 'div', 'product-min-price__current')
    print(price)

DNS()


Выдается пустой список! Хотя класс тега указан правильно.
5f587e23ecd92679342362.png

Если я попытаюсь собрать другой div, который находится на нескольких слоев пониже, то выведется подобное... Где оставльные слои, которые вложены в этот класс?

5f587f9cb466e750063246.png

Это какая-то защита? Как ее обойти?
  • Вопрос задан
  • 1054 просмотра
Пригласить эксперта
Ответы на вопрос 2
Dr_Elvis
@Dr_Elvis Куратор тега Python
В гугле забанен
Откройте для себя postman. Это удобный инструмент для выполнения запросов. И в нем отправьте запрос по ссылке что у вас. У меня возможности проверить сейчас нет, но думаю что на странице выполняется JS, который заполняет страницу нужными вам данными, а в python скрипте вы получаете сырые данные, без выполнения JS.
Почитайте про selenium, он поможет в таких случаях. Либо изучите какие запросы отправляет сайт и сымитируйте их.
Ответ написан
SoreMix
@SoreMix Куратор тега Python
yellow
Это ID, по которым потом выставляется цена. Цена погружается через POST на https://www.dns-shop.ru/ajax-state/min-price/

1. Открывайте Ctrl+U и смотрите что есть на странице
2. Открывайте F12-Network и смотрите откуда приходят цены и как они появляются
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы