Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 23, 2021 12:57:19

Temp
Зарегистрирован: 2021-01-16
Сообщения: 75
Репутация: +  1  -
Профиль   Отправить e-mail  

Туплю с библиотекой requests

Доброго времени суток!

Программист уз меня нулёвый, потому без подсказки я не решу свою задачу.

А задача следующая:
Имеется определённый сайт с товаром, допустим этот:

 https://www.kant.ru
Так вот, я, ручками(не автоматически) вбиваю ссылки на конкретные товары, нашим подопытным в данном примере будет данный товар:
 https://www.kant.ru/catalog/product/2746383/

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

Будет ли там написано “Добавить в корзину” или же “Под заказ”

Исходя из пары запросов в гугле, натыкал следующие пару строк:
 import requests
from bs4 import BeautifulSoup as BS
r = requests.get("https://www.kant.ru/catalog/product/2746383/")
html = BS(r.content, 'html.parser')
button = html.select('Непонятно что тут писать в моём случае')
print(button)

Переписывание пути из “посмотреть код элемента” либо выдаёт ошибки из-за символа # либо вообще ничего не даёт


Прошу подсказать как это делается по-человечески.

А так же имеется еще один камень преткновения - выбор размера/цвета товара:

Изменение данных параметров вручную на сайте не меняет адрес сайта, было бы здорово проверить все комбинации подопытного товара.

Уооот, я максимально подробно раскрыл вопрос.
Я не прошу сделать за меня эту работу, прошу лишь подсказать.
Большое спасибо что дочитал, рассчитываю на тебя

Офлайн

#2 Окт. 23, 2021 17:05:36

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Туплю с библиотекой requests

там в div элементе (контейнере) html кода лежит эээ прописана эта надпись

зы любой браузер иследовать элемент ну или что то подобное
чем парсить будете ето уже дело ваших предпочтений



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Окт. 23, 2021 17:05:53)

Офлайн

#3 Окт. 23, 2021 18:49:16

Temp
Зарегистрирован: 2021-01-16
Сообщения: 75
Репутация: +  1  -
Профиль   Отправить e-mail  

Туплю с библиотекой requests

AD0DE412
там в div элементе (контейнере) html кода лежит эээ прописана эта надпись
Извини, я не ничего не понял.

Офлайн

#4 Окт. 23, 2021 20:04:47

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Туплю с библиотекой requests



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#5 Окт. 23, 2021 23:43:10

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Туплю с библиотекой requests

Temp
Так вот, я, ручками(не автоматически) вбиваю ссылки на конкретные товары, нашим подопытным в данном примере будет данный товар:
Найди товар, где написано “Под заказ”, и пришли ссылку сюда.



Отредактировано py.user.next (Окт. 23, 2021 23:45:38)

Офлайн

#6 Окт. 24, 2021 00:09:25

Temp
Зарегистрирован: 2021-01-16
Сообщения: 75
Репутация: +  1  -
Профиль   Отправить e-mail  

Туплю с библиотекой requests

py.user.next
Этот сайт взят для примера, мне лишь нужно выдрать надпись из кнопки
AD0DE412
Спасибо, но уже открыл данное меню. скрин есть выше. я в нем не разобрался.

Отредактировано Temp (Окт. 24, 2021 00:09:39)

Офлайн

#7 Окт. 24, 2021 01:45:05

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Туплю с библиотекой requests

Temp
Этот сайт взят для примера, мне лишь нужно выдрать надпись из кнопки
Все сайты разные. К тому же один сайт может меняться. Что сработает для одного сайта, не сработает для другого. А скрипт, написанный для какого-то сайта, может через месяц отвалиться, потому что код сайта будет изменён администрацией сайта.

Попытки проанализировать страницу через консоль браузера далеко не всегда помогают, потому что в консоли браузера показывается не страница, а DOM (объектная модель документа), которая может быть собрана не только из содержимого страницы, но и построена на лету JavaScript-скриптами.



Офлайн

#8 Окт. 24, 2021 10:56:30

Temp
Зарегистрирован: 2021-01-16
Сообщения: 75
Репутация: +  1  -
Профиль   Отправить e-mail  

Туплю с библиотекой requests

 import requests
from bs4 import BeautifulSoup as BS
r = requests.get("https://www.kant.ru/catalog/product/2746383/")
html = BS(r.content, 'html.parser')
button = html.find(class_="kant__product__buy__button--new")
print(button.text.strip())
нашел способ вытащить надпись с первого встречного класса с наименованием “kant__product__buy__button–new”, мне в принципе этого хватит.
py.user.next
ты прав, надеюсь это происходит слишком часто, при необходимости можно прогружать наименование класса со стороннего файла а не прятать его в код, а после обновлять его в случае изменений на сайте.


Остался открытым еще один вопрос: как быть с размерами/цветом товара?

Имеется ли возможность эмулировать нажатие на данные кнопки для получения нужного результата?
Или при парсинге это делается иначе?

Офлайн

#9 Окт. 24, 2021 11:24:35

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Туплю с библиотекой requests

ну так да DOM это конечая точка как мне представляется
————————————-


————————————


Temp
Остался открытым еще один вопрос: как быть с размерами/цветом товара?
а вы адрес смотрели при выборе цвета товара?



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Окт. 24, 2021 11:42:45)

Офлайн

#10 Окт. 24, 2021 11:45:41

Temp
Зарегистрирован: 2021-01-16
Сообщения: 75
Репутация: +  1  -
Профиль   Отправить e-mail  

Туплю с библиотекой requests

AD0DE412
ну так да DOM это конечая точка как мне представляется————————————-————————————
Вы наверное неправильно меня поняли, я не собираюсь менять значение в данной кнопки, лишь считать.

То есть, если надпись будет “Добавить в корзину” то товар есть в наличии, иначе его нет. Это костыльная проверка наличия определенных товаров на сайте. Очень не у многих сайтов есть api.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version