Как спарсить текст из тега, вложенного в другой тег с помощью BS4
Задача состоит в том, чтобы спарсить карточку товара с сайта https://vedro.pro/oils_catalog?viewMode=tile&goods_group=oils&start=0. При работе у меня возникло несколько проблем:
- Не получается взять из карточки описание из двух тегов p и a. Так как тег а вложен в тег р, у меня не выходит вытащить текст.
- Не получается спарсить карточки с других страниц, т.е. при попытки парсинга товаров со второй страницы в консоль все равно выводятся названия товаров с первой, и т.д. На мой взгляд, я правильно прописал цикл так, чтобы он подставлял в ссылку число, соответствующее ссылке страницы.
В течение дня я пробовал разные способы и конструкции, но в последнем варианте я все таки смог вытащить описание, хотя я понимаю, что можно сделать намного легче и правильнее.
Вот код, который я накидал:
import requests
from bs4 import BeautifulSoup
from time import sleep
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac), Apple Inc (US)
AppleWebKit/537.36 (KHTML, like Ge)'}
for count in range(0, 180, 20):
url = f'https://vedro.pro/oils_catalog?viewMode=tile&goods_group=oils&start={count}'
response = requests.get(url, headers=headers, params=None)
soup = BeautifulSoup(response.text, 'lxml')
data = soup.find('ul', class_='item_ul')
for i, el in enumerate(data):
for j in data.find_all('p'):
name = data.find_all('h3')
print('-' * 20 + '\n',
name[i].text.strip() + '\n',
f'{j.text.strip()}' + '\n' +
'-' * 20)
sleep(5)