Как добавить один спиок в другой в BeautifulSoup
У меня есть парсер, которой пасрит названия товаров, но я хочу еще добавить id для этого списка, как мне это сделать?
Код:
import requests
from bs4 import BeautifulSoup
import csv
import os
URL = 'https://ptk-svarka.ru/catalog/apparaty-argonodugovoy-svarki-tig'
HEADERS = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36', 'accept': '*/*'}
def get_html(url, params=None):
r = requests.get(url, headers=HEADERS, params=params)
return r
def get_html_vivod(html):
svarka = []
soup = BeautifulSoup(html, 'html.parser')
items = soup.find_all('div', class_='b-products')
for item in items:
svarka.append({
#id - здесь должен быть айди
"text": item.find('div', class_='b-products__title').get_text(strip=True)
})
return svarka
html = get_html(URL)
print(get_html_vivod(html.text))
Ответы (1 шт):
Автор решения: Михаил Муругов
→ Ссылка
Раз проблема в генерации id, то надо решить, как его генерировать. Первые 2 варианта, пришедшие в голову:
enumerate
...
for idx, item in enumerate(items):
svarka.append({
"id": idx
"text": item.find('div', class_='b-products__title').get_text(strip=True)
})
...
В таком случае id будет инкрементироваться с каждой итерацией (0, 1, 2 и т.д.).
uuid
from uuid import uuid4
...
for item in enumerate(items):
svarka.append({
"id": str(uuid4())
"text": item.find('div', class_='b-products__title').get_text(strip=True)
})
...
Так каждый раз будут генеирироваться уникальные идентификаторы, похожие на 13a7a512-4aef-4162-9c6e-5a5b181534b8.