Очистка веб-страниц Beautiful Soup / получение ссылки на продукт

#python #beautifulsoup #web-crawler

#python #beautifulsoup #веб-сканер

Вопрос:

Я пытаюсь получить название продукта и его цену с одного локального веб-сайта, для этого я использую Beautiful Soup. Мой код:

  productlinks = []

for x in range(1,3):
    r = requests.get(F'https://www.mechta.kz/section/stiralnye-mashiny/?arrFilter5_pf[NEW]=amp;arrFilter5_pf[ARFP]=43843,43848amp;arrFilter5_pf[PROMOCODE_PROCENT][LEFT]=amp;arrFilter5_pf[PROMOCODE_PROCENT][RIGHT]=amp;arrFilter5_pf[MINPRICE_s1][LEFT]=38990amp;arrFilter5_pf[MINPRICE_s1][RIGHT]=1171000amp;set_filter=Yamp;PAGEN_2={x}')
    soup = BeautifulSoup(r.content, 'lxml')
    productlist = soup.find_all('div', class_='aa_st_img iprel')
    for item in productlist:
            for link in item.find_all('a', href=True):
                productlinks.append(baseurl   link['href'])
 

Код работает хорошо, однако он не получает все продукты с веб-сайта, он пропускает некоторые продукты (без ссылок на продукты)

Не могли бы вы предложить решение этой проблемы

Спасибо!

Ответ №1:

Похоже, что по ссылке в классе j_product_link есть все ссылки, поэтому мы можем найти все теги с классом j_product_link .

например

 soup.find_all('a', class_='j_product_link')
 

возможное решение

 for x in range(1,3):
    r = requests.get(F'https://www.mechta.kz/section/stiralnye-mashiny/?arrFilter5_pf[NEW]=amp;arrFilter5_pf[ARFP]=43843,43848amp;arrFilter5_pf[PROMOCODE_PROCENT][LEFT]=amp;arrFilter5_pf[PROMOCODE_PROCENT][RIGHT]=amp;arrFilter5_pf[MINPRICE_s1][LEFT]=38990amp;arrFilter5_pf[MINPRICE_s1][RIGHT]=1171000amp;set_filter=Yamp;PAGEN_2={x}')
    soup = BeautifulSoup(r.content, 'lxml')
    productlist = soup.find_all('a', class_='j_product_link')
    for link in productlist:
        productlinks.append(baseurl   link['href'])
 

Комментарии:

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