@bybacapitan

Почему не работает?

Написал бота для скачивания всего из профиля в инстаграме, запускаю на пк - все работает отлично, деплою на хероку и бот не работает.
Знаю что на хероку работать сложно с такими библиотеками но, до этого делал код который скачивает просто пост.
Так выглядит код
from aiogram import Dispatcher, types
from create_bot import dp, bot
from aiogram.types import ChatActions
from aiogram.utils.exceptions import InvalidHTTPUrlContent

from bs4 import BeautifulSoup as BS
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait


async def downloader(message: types.Message):
    if message.text.startswith(f'https://www.instagram.com/p/')\
    or message.text.startswith('https://www.instagram.com/s/')\
    or message.text.startswith('https://www.instagram.com/tv/')\
    or message.text.startswith('https://www.instagram.com/igtv/')\
    or message.text.startswith('https://instagram.com/igtv/')\
    or message.text.startswith('https://instagram.com/tv/')\
    or message.text.startswith('https://instagram.com/s/')\
    or message.text.startswith('https://instagram.com/p/'):
        print('функция посты')
        await downloader_posts(message)
    else:
        print('функция профиль')
        await downloader_profile(message)
        
def start_browser():
    chrome_options = webdriver.ChromeOptions()
    chrome_options.binary_location = '/app/.apt/usr/bin/google-chrome'
    chrome_options.add_argument("--headless")
    chrome_options.add_argument("--disable-dev-shm-usage")
    chrome_options.add_argument("--no-sandbox")
    browser = webdriver.Chrome(executable_path='/app/.chromedriver/bin/chromedriver', chrome_options=chrome_options)
    browser.maximize_window()
    return browser


        
async def downloader_profile(message):
    browser = start_browser()
    browser.get('https://bigbangram.com/content/instagram-downloader/instagram-profile-downloader/')
    _login = browser.find_element(By.NAME, 'DownloaderForm[search]')
    _login.send_keys(message.text)
    _login.send_keys(Keys.ENTER)
     wait = WebDriverWait(browser, 15)
     element = wait.until(EC.element_to_be_clickable((By.CLASS_NAME,'downloader-post-type')))
    src = browser.page_source 
    browser.quit()  
    soup = BS(src, 'html.parser')
    links = soup.find_all('a', {'class': 'cbp-caption'})
    for link in links:
        download_url  = link.get("href")
        try:
            await message.answer_video(download_url)
        except:
            pass
    await bot.send_message(message.chat.id, 'Finish.')



async def downloader_posts(message):
    await bot.send_chat_action(message.chat.id, ChatActions.UPLOAD_DOCUMENT)
    browser = start_browser()
    browser.get('https://sssinstagram.com/')
    _login = browser.find_element(By.NAME, 'id')
    _login.send_keys(message.text)
    _login.send_keys(Keys.ENTER)
    wait = WebDriverWait(browser, 10)
    element = wait.until(EC.element_to_be_clickable((By.ID,'response')))
    src = browser.page_source  
    browser.quit()  
    soup = BS(src, 'html.parser')
    links = soup.find_all('div', {'class': 'download-wrapper'})
    for link in links:
        download_url = (link.find('a', href=True)['href'])
        await message.answer_video(download_url)
    try:
        tag = soup.find("div", class_="title")
        await bot.send_message(message.chat.id, tag.text.strip())
    except:
        pass



def register_handlers_text(dp: Dispatcher):
    dp.register_message_handler(downloader, lambda message: message.text.startswith('https://instagram.com/') or message.text.startswith('https://www.instagram.com/'))


Если запусить downloader_posts, то все работает без ошибок.
А если downloader_profile, то возникает ошибка
selenium.common.exceptions.TimeoutException: Message:

Это значит что нужный мне класс после нажатия enter не появился.
Почему?
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
https://instaloader.github.io/

а что профиль без залогинивания может быть скачан?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы