#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. Привет, спасибо за отзыв. Однако проблема не решена, я все еще не получаю некоторые продукты.