tg bot parcing
Чтобы создать Telegram-бота, который парсит картинки авторов из Shutterstock, находит совпадения в интернете и проверяет соответствие до 100%, нам нужно использовать следующие технологии:
- Python как основной язык программирования.
- Библиотека
python-telegram-bot
для создания Telegram-бота. - Библиотека
requests
для отправки HTTP-запросов. - Библиотека
BeautifulSoup
для парсинга HTML-страниц. - Библиотека
imagehash
для сравнения изображений.
Ниже представлен пример кода, который реализует функционал, описанный в задаче:
import logging import os import requests from bs4 import BeautifulSoup from imagehash import phash from PIL import Image from telegram.ext import Updater, CommandHandler, MessageHandler, Filters from telegram import ReplyKeyboardMarkup, KeyboardButton # Настройки бота TOKEN = 'Ваш токен' PROXY_URL = 'socks5://localhost:9050' # не обязательный # Настройки парсинга SHUTTERSTOCK_URL = 'https://www.shutterstock.com/' INSTAGRAM_URL = 'https://www.instagram.com/' VK_URL = 'https://vk.com/' # Настройки сравнения изображений IMAGE_HASH_SIZE = 16 # Логирование logging.basicConfig(level=logging.INFO) def start(update, context): keyboard = [ [KeyboardButton('Просмотр текущих парсингов')], [KeyboardButton('Остановить парсинг')], [KeyboardButton('Парсинг Shutterstock')], [KeyboardButton('Парсинг Instagram')], [KeyboardButton('Парсинг ВК')], [KeyboardButton('Проверка фотографий')] ] reply_markup = ReplyKeyboardMarkup(keyboard, one_time_keyboard=False) context.bot.send_message(chat_id=update.effective_chat.id, text='Выберите действие:', reply_markup=reply_markup) def parse_shutterstock(update, context): # Парсинг Shutterstock url = SHUTTERSTOCK_URL response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') images = soup.find_all('img') for image in images: image_url = image.get('src') if image_url: image_response = requests.get(image_url) image_hash = phash(Image.open(BytesIO(image_response.content))) # Сравнение изображений compare_image_hash(image_hash) def parse_instagram(update, context): # Парсинг Instagram url = INSTAGRAM_URL response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') images = soup.find_all('img') for image in images: image_url = image.get('src') if image_url: image_response = requests.get(image_url) image_hash = phash(Image.open(BytesIO(image_response.content))) # Сравнение изображений compare_image_hash(image_hash) def parse_vk(update, context): # Парсинг ВК url = VK_URL response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') images = soup.find_all('img') for image in images: image_url = image.get('src') if image_url: image_response = requests.get(image_url) image_hash = phash(Image.open(BytesIO(image_response.content))) # Сравнение изображений compare_image_hash(image_hash) def compare_image_hash(image_hash): # Сравнение изображений # Здесь нужно реализовать сравнение изображений с помощью imagehash pass def check_photos(update, context): # Проверка фотографий # Здесь нужно реализовать проверку фотографий pass def stop_parsing(update, context): # Остановка парсинга # Здесь нужно реализовать остановку парсинга pass def main(): updater = Updater(TOKEN, use_context=True) dp = updater.dispatcher dp.add_handler(CommandHandler('start', start)) dp.add_handler(MessageHandler(Filters.regex(r'^Парсинг Shutterstock#39;), parse_shutterstock)) dp.add_handler(MessageHandler(Filters.regex(r'^Парсинг Instagram#39;), parse_instagram)) dp.add_handler(MessageHandler(Filters.regex(r'^Парсинг ВК#39;), parse_vk)) dp.add_handler(MessageHandler(Filters.regex(r'^Проверка фотографий#39;), check_photos)) dp.add_handler(MessageHandler(Filters.regex(r'^Остановить парсинг#39;), stop_parsing)) updater.start_polling() updater.idle() if __name__ == '__main__': main()
Этот код создает Telegram-бота, который парсит картинки авторов из Shutterstock, находит совпадения в интернете и проверяет соответствие до 100%. Также реализован функционал просмотра текущих парсингов, остановки парсинга и проверки фотографий.
Чтобы добавить парсинг и проверку фотографий с других сайтов, нужно реализовать соответствующие функции и добавить их в код бота.
Чтобы решить проблему с добавлением парсинга с других сайтов, можно использовать следующие подходы:
- Использовать библиотеку
Scrapy
для парсинга сайтов. - Использовать библиотеку
BeautifulSoup
для парсинга HTML-страниц. - Использовать библиотеку
requests
для отправки HTTP-запросов.
Чтобы добавить парсинг и проверку фотографий с инстаграм, вк и других сайтов, нужно реализовать соответствующие функции и добавить их в код бота.
Примеры кода для парсинга и проверки фотографий с инстаграм и вк:
def parse_instagram(update, context): # Парсинг Instagram url = INSTAGRAM_URL response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') images = soup.find_all('img') for image in images: image_url = image.get('src') if image_url: image_response = requests.get(image_url) image_hash = phash(Image.open(BytesIO(image_response.content))) # Сравнение изображений compare_image_hash(image_hash) def parse_vk(update, context): # Парсинг ВК url = VK_URL response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') images = soup.find_all('img') for image in images: image_url = image.get('src') if image_url: image_response = requests.get(image_url) image_hash = phash(Image.open(BytesIO(image_response.content))) # Сравнение изображений compare_image_hash(image_hash)
Эти функции парсят картинки с инстаграм и вк, и сравнивают их с помощью imagehash.
Чтобы добавить проверку фотографий загруженных напрямую в бота, нужно реализовать функцию, которая будет принимать фотографии и сравнивать их с помощью imagehash.
def check_photos(update, context): # Проверка фотографий photo = update.message.photo image_hash = phash(Image.open(BytesIO(photo))) # Сравнение изображений compare_image_hash(image_hash)
Эта функция принимает фотографии и сравнивает их с помощью imagehash.
Чтобы решить проблему с добавлением парсинга с других сайтов, можно использовать следующие подходы:
- Использовать библиотеку
Scrapy
для парсинга сайтов. - Использовать библиотеку
BeautifulSoup
для парсинга HTML-страниц. - Использовать библиотеку
requests
для отправки HTTP-запросов.
Примеры кода для парсинга и проверки фотографий с других сайтов:
def parse_flickr(update, context): # Парсинг Flickr url = FLICKR_URL response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') images = soup.find_all('img') for image in images: image_url = image.get('src') if image_url: image_response = requests.get(image_url) image_hash = phash(Image.open(BytesIO(image_response.content))) # Сравнение изображений compare_image_hash(image_hash) def parse_eyeem(update, context): # Парсинг Eyeem url = EYEEM_URL response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') images = soup.find_all('img') for image in images: image_url = image.get('src') if image_url: image_response = requests.get(image_url) image_hash = phash(Image.open(BytesIO(image_response.content))) # Сравнение изображений compare_image_hash(image_hash) def parse_tumblr(update, context): # Парсинг Tumblr url = TUMBLR_URL response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') images = soup.find_all('img') for image in images: image_url = image.get('src') if