Я пытаюсь получить сведения о продукте из образца продукта URL с кодом ниже -
def get_soup(url):
soup = None
try:
response = requests.get(url)
if response.status_code == 200:
html = response.content
soup = BeautifulSoup(html, "html.parser")
except Exception as exc:
print("Unable to fecth data due to..", str(exc))
finally:
return soup
def get_product_details(url):
soup = get_soup(url)
sleep(1)
try:
product_shop = soup.find('div', attrs={"class": "buy"})
if product_shop is not None:
available_product_shop = soup.findAll('div')[2].find('span').text == "In Stock"
if available_product_shop is not None:
prod_details = dict()
merchant_product_id = soup.find('div', attrs={'class': 'description'}).findAll('span')[3].text
if merchant_product_id is not None:
prod_details['merchant_product_id'] = merchant_product_id
check_brand = soup.find('div', attrs={'class': 'description'}).findAll('span')[2].find('a')
if check_brand is not None:
prod_details['brand'] = check_brand.text
prod_details['merchant_image_urls'] = ",".join(list(filter(None, map(lambda x: x['href'].replace(",", "%2C"),
soup.find('div', attrs={
'class': 'left'}).findAll(
'a')))))
check_price = soup.find('span', attrs={"class": "price-old"})
if check_price is not None:
prod_details['price'] = check_price.text.replace("SGD $", "")
check_sale_price = soup.find('span', attrs={"class": "price-new"})
if check_sale_price is not None:
prod_details['sale_price'] = check_sale_price.text.replace("SGD $", "")
return prod_details
except Exception as exc:
print("Error..", str(exc))
Проблема в приведенном выше коде заключается в том, что я не могу получить значение бренда, идентификатор продукта и URL-адреса изображений также выбраны неправильно.
Может кто-нибудь взглянуть на мой код и помочь мне получить правильные данные?