возвращает URL на основе пользовательского ввода

#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',
 ...]