Добавить парсер в телеграмм бот
То что делает парсер должно происходить в тг боте, запросы делаем например: volvo s80 d5 2013, полученные разделы нужно отобразить как отдельная кнопка внутри которой располагается масло или антифриз или то что выбрал пользователь
код бота:
import telebot
from config import keyForbot
from telebot import types
from bs4 import BeautifulSoup as BS
import requests
bot = telebot.TeleBot(keyForbot)
@bot.message_handler(commands=['start'])
def start(message):
bot.send_message(message.chat.id, 'Привет, {0.first_name}! , меня звоут PROVOLVик, я бот который тебе поможет тебе с подбором тех.жидкостей!'.format(message.from_user))
bot.send_message(message.chat.id,'🚘Введите марку и модель авто: ')
@bot.message_handler(content_types= ['text'])
def parser_oil(message):
query = input('Введите марку и модель авто: ')
api_url = 'https://www.kroon-oil.com/api/carlist.json'
car_models = requests.post(api_url, json={"query": query}).json()
try:
car = car_models['response'][0]
except:
car = car_models['response'][1]
base_url = 'https://www.kroon-oil.com/ru/product-recommendation/cars/{}/{}/{}/{}'
url = base_url.format(car['make_url_name'],
car['model_url_name'],
car['type_url_name'],
car['type_id'])
soup = BS(requests.get(url).content, 'lxml')
sections = soup.find_all('h2')
for section in sections:
print(section.text.strip('\n'))
section_url = url + '/' + section.parent['data-componentid']
soup = BS(requests.get(section_url).content, 'lxml')
try:
products = soup.find('ul', class_='recommended-products').find_all('h3')
except:
print('\t Не найдено')
for product in products:
print('\t{}'.format(product.text))
bot.polling(non_stop=True)
код парсера:
import requests
from bs4 import BeautifulSoup as BS
query = input('Введите марку и модель авто: ')
api_url = 'https://www.kroon-oil.com/api/carlist.json'
car_models = requests.post(api_url, json={"query":query}).json()
try:
car = car_models['response'][0]
except:
car = car_models['response'][1]
base_url = 'https://www.kroon-oil.com/ru/product-recommendation/cars/{}/{}/{}/{}'
url = base_url.format(car['make_url_name'],
car['model_url_name'],
car['type_url_name'],
car['type_id'])
soup = BS(requests.get(url).content, 'lxml')
sections = soup.find_all('h2')
for section in sections:
print(section.text.strip('\n'))
section_url = url+'/'+section.parent['data-componentid']
soup = BS(requests.get(section_url).content, 'lxml')
try:
products = soup.find('ul', class_='recommended-products').find_all('h3')
except:
print('\t Не найдено')
for product in products:
print('\t{}'.format(product.text))
Источник: Stack Overflow на русском