@ARHAT-99

Как заменить input на аргумент, что-бы отдать в аргумент название товара?

Вопрос такой: В парсинге выдачи поисковика необходимо избавиться от input и заменить его на *args, что-бы *args получил любое название, пример; 'xiaomi redmi note 7' и в пробелы были заменены на '+',
import requests
from bs4 import BeautifulSoup

def get_html(full_url):
    res = requests.get(full_url)
    return res.text

def get_data(full_url):
    soup = BeautifulSoup(full_url, 'lxml')
    if soup.find('div', class_='empty-cart'): # если такого товара нет на сайте
        print(f'По условиям поиска {search_name}, ничего не найдено так как такого товара нет')
    items = soup.find_all('div', class_='hit__slide')
    phone = []
    for item in items:
        price = item.find('span', class_='hit__slide__price')
        if price:
            price = price.get_text()
        else:
            price = ''
        phone = [i for i in phone if i["Cost"] != '']
        phone.append({
            'Name': item.find("h6", class_='hit__slide__title').get_text(),
            'Cost': price,
        })
    for value in phone:
        print(' '.join(value.values()))


while True:
    search_name = input('Название телефона: ') # отдаем название
    url = 'http://www.gadget.kg/catalog/search?q='
    full_url = (url + search_name.replace(' ', '+')) # в search_name меняю пробелы на +
    HOST = 'http://www.gadget.kg'
    html = get_html(full_url)
    get_data(html)
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
Необходимо подать список на вход, список читать например из текстового файла или базы, тогда
while True:
    search_name = input('Название телефона: ') # отдаем название
    url = 'http://www.gadget.kg/catalog/search?q='
    full_url = (url + search_name.replace(' ', '+')) # в search_name меняю пробелы на +
    HOST = 'http://www.gadget.kg'
    html = get_html(full_url)
    get_data(html)

заменить на
for search_name in items_name_list:
    url = 'http://www.gadget.kg/catalog/search'
    payload = {'q': search_name }
    response = requests.get(url, params=payload)
    get_data(response.text)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы