WedX - журнал о программировании и компьютерных науках

Как найти элемент по классу в BS4 (python 3)

Веб-сайт: https://ca.cartier.com/en-ca/collections/jewelry/categories.viewall.html

Хотите очистить всю информацию для каждого продукта и скопировать в файл Excel для дальнейшего построения диаграмм/анализа.

Следил за документацией здесь: https://www.crummy.com/software/BeautifulSoup/bs4/doc/#searching-by-css-class

Работа пока ничего не возвращает:

import requests
from bs4 import BeautifulSoup
from bs4 import NavigableString

url = "https://ca.cartier.com/en-ca/collections/jewelry/categories.viewall.html"
headers = {'User-Agent': 'Mozilla/5.0'}
page = requests.get(url)
soup = BeautifulSoup(page.text, 'lxml')

lst =[]


for my_items in soup.find_all("div", attrs={"class": "grid-item"}):

    print(my_items)

  • Веб-сайт отображает элементы, которые вы пытаетесь найти, с помощью javascript после завершения загрузки страницы с помощью запросов вашего кода. Использование запросов не будет работать. 15.02.2021

Ответы:


1

Страница загружается динамически, поэтому requests ее не поддерживает. Однако данные доступны при отправке запроса GET по адресу:

https://ca.cartier.com/en-ca/collections/jewelry/categories.productlistingservletv2.json

Данные ответа представляют собой словарь Python (dict), где вы можете получить доступ к key/value:

>>> import requests
>>>
>>>
>>> URL = "https://ca.cartier.com/en-ca/collections/jewelry/categories.productlistingservletv2.json"
>>> response = requests.get(URL).json()
>>> print(type(response))
<class 'dict'>

Альтернативой может быть использование Selenium для очистки страницы.

Установите его с помощью: pip install selenium.

Загрузите правильный ChromeDriver с здесь.

В вашем примере:

from time import sleep
from selenium import webdriver
from bs4 import BeautifulSoup

URL = "https://ca.cartier.com/en-ca/collections/jewelry/categories.viewall.html"
driver = webdriver.Chrome(r"c:\path\to\chromedriver.exe")
driver.get(URL)
# Wait for the page to fully render
sleep(5)

soup = BeautifulSoup(driver.page_source, "html.parser")
driver.quit()

for tag in soup.find_all("div", attrs={"class": "grid-item"}):
    print(tag)
14.02.2021
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]