#python #web-scraping #beautifulsoup #conditional-statements #user-input
#python #веб-очистка #beautifulsoup #условные операторы #пользовательский ввод
Вопрос:
Я пытаюсь загрузить другой продукт с локального веб-сайта, для этого я использую beautifulsoup. Я пытаюсь сделать свой старый код более гибким, поэтому я хочу включить функцию пользовательского ввода, на основе которой код будет загружать то, что ввел пользователь.
type = input("Please enter a product:n")
print(f'Downloading {type}')
linkwm = f'https://www.sulpak.kz/f/stiralniye_mashiniy/almaty/90_6-90_1?page='
linkref = f'https://www.sulpak.kz/f/holodilniki/almaty/328_6-328_1?page='
linktv = f'https://www.sulpak.kz/f/led_oled_televizoriy/almaty/1285_1-1285_6?page='
if type == 'wm':
link = linkwm
rn = range(1, 4)
elif type == 'ref':
link = linkref
rn = range(1, 4)
else:
link = linktv
rn = range(1, 6)
print(link)
print(rn)
productlinks = []
for x in rn:
r = requests.get(link f'{x}')
soup = BeautifulSoup(r.content, 'lxml')
У меня проблема с r = requests.get(link f'{x}')
тем, что я хочу, чтобы URL requests.get
-адрес добавлял x в конец URL-адреса, чтобы код получал информацию со всех веб-страниц в диапазоне
Комментарии:
1. я не понимаю вашей проблемы, ваша итерация выглядит хорошо. Когда вы перебираете диапазон, получаете ли вы ту же веб-страницу?
2. С какой ошибкой вы столкнулись?
3. В нем говорится, что r = requests.get(link f'{x}’) Ошибка типа: неподдерживаемые типы операндов для : ‘Tag’ и ‘str’
4. В принципе, я не могу перебирать страницы
Ответ №1:
Старайтесь избегать использования python keywords
в качестве variable name
списка ключевых слов
Рабочий пример, основанный на вашем коде (ввод -> wm):
import requests
from bs4 import BeautifulSoup
productType = input("Please enter a product:n")
print(f'Downloading {productType}')
linkwm = f'https://www.sulpak.kz/f/stiralniye_mashiniy/almaty/90_6-90_1?page='
linkref = f'https://www.sulpak.kz/f/holodilniki/almaty/328_6-328_1?page='
linktv = f'https://www.sulpak.kz/f/led_oled_televizoriy/almaty/1285_1-1285_6?page='
if productType == 'wm':
link = linkwm
rn = range(1, 4)
elif productType == 'ref':
link = linkref
rn = range(1, 4)
else:
link = linktv
rn = range(1, 6)
productlinks = []
for x in rn:
r = requests.get(link f'{x}')
soup = BeautifulSoup(r.content, 'lxml')
for url in soup.select('div.goods-photo > a'):
productlinks.append('https://www.sulpak.kz/' url['href'])
productlinks
Выходной сигнал:
['https://www.sulpak.kz//g/stiralnaya_mashina_samsung_wf8590nlw9dyld',
'https://www.sulpak.kz//g/stiralnaya_mashina_lg_f10b8nd_abwpcom',
'https://www.sulpak.kz//g/stiralnaya_mashina_ww70j52e02wdld_8_623',
'https://www.sulpak.kz//g/ctiralnaya_mashina_samsung_wd70j5410awld',
'https://www.sulpak.kz//g/stiralnaya_mashina_lg_f12b8wds7_8_817',
'https://www.sulpak.kz//g/stiralnaya_mashina_lg_f2v5hs0w_8_628',
'https://www.sulpak.kz//g/stiralnaya_mashina_lg_f2v5hs2s_8_629',
'https://www.sulpak.kz//g/stiralnaya_mashina_lg_f2v5hs9b_8_837',
'https://www.sulpak.kz//g/stiralnaya_mashina_lg_f1296hds4_8_823',
'https://www.sulpak.kz//g/stiralnaya_mashina_lg_f1296hds0_8_825',
'https://www.sulpak.kz//g/stiralnaya_mashina_samsung_ww70r421xtwdld_8_579',
'https://www.sulpak.kz//g/stiralnaya_mashina_samsung_ww90k6414qwlp',
'https://www.sulpak.kz//g/stiralnaya_mashina_lg_f1296nds3_8_821',
'https://www.sulpak.kz//g/stiralnaya_mashina_lg_f2m5hs6s',
...]