Chromedriver и firefoxdriver аварийно завершают работу/останавливаются на герокуPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Chromedriver и firefoxdriver аварийно завершают работу/останавливаются на героку

Сообщение Anonymous »

Я пытаюсь разместить своего собственного бота, который будет проверять цену планшета, который я хочу купить, и отправлять сообщение, если цена изменится в Discord, я использую Heroku, потому что у меня есть бесплатные кредиты из пакета разработки для студентов GitHub, но когда я бегу я получаю
selenium.common.Exceptions.WebDriverException: Сообщение: процесс неожиданно закрыт со статусом 255
я прочитал в firefox owngrade, но как мне стоит сделать это на героку? использование chromedriver дает
2024-10-31T15:09:07.674086+00:00 app[worker.1]: selenium.common.Exceptions.SessionNotCreatedException: Сообщение: сеанс не создан: Chrome не удалось для начала: завершился нормально.
2024-10-31T15:09:07.674086+00:00 app[worker.1]: (сеанс не создан: файл DevToolsActivePort не существует)
2024-10-31T15:09:07.674098+00: 00 app[worker.1]: (Процесс начался из местоположения Chrome /app/.cache/selenium/chrome/linux64/130.0.6723.91/chrome больше не работает, поэтому ChromeDriver предполагает, что Chrome вышел из строя.)
оба работают на моем компьютере
Я попробовал установить пакет сборки Heroku-Integrated-Firefox-GeckoDriver, но это не сработало, так как мне нужна версия Heroku 20, 18 или 16, а у меня 24 и я не знаю, как понизить версию
src с помощью ChromeDriver:

Код: Выделить всё

import asyncio
import discord
from discord.ext import commands
import time
from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.firefox.options import Options
from fake_useragent import UserAgent

intents = discord.Intents.default()
intents.members = True
intents.message_content = True

bot = commands.Bot(command_prefix='?', description="Checking price lol", intents=intents)

# Initialize global variables
global xkom_price_nokb, xkom_price, xkom_price_lte, lastchecked
xkom_price = None
xkom_price_lte = None
lastchecked = None
xkom_price_nokb = None

@bot.event
async def on_ready():
print(f'Logged in as {bot.user} (ID: {bot.user.id})')
print('------')
channel = bot.get_channel(1299401756723249246)

# Initial Embed Message
embed = discord.Embed(title="Lenovo Tab P11 6GB/128GB", color=0x39153e)
embed.add_field(name="x-kom", value="", inline=False)
embed.add_field(name="WiFi (no keyboard)", value="Loading...", inline=True)
embed.add_field(name="WiFi", value="Loading...", inline=True)
embed.add_field(name="WiFi/LTE", value="Loading...", inline=True)
embed.add_field(name="Last checked", value="Loading...", inline=False)

if channel:
async for message in channel.history(limit=None):
await message.delete()
else:
await channel.send(f'Error: Channel not found.')

global embedsent, embedskirtsent
embedsent = await channel.send(embed=embed)

# Start monitoring prices
await monitor_prices()

async def fetch_price(url, whatclass):
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument("--incognito")
options.add_argument("--nogpu")
options.add_argument("--disable-gpu")
options.add_argument("--window-size=1280,1280")
options.add_argument("--no-sandbox")
options.add_argument("--enable-javascript")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument('--disable-blink-features=AutomationControlled')

ua = UserAgent()
userAgent = ua.random

driver = webdriver.Chrome(options=options)
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () =>  undefined})")
driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent":  userAgent})

driver.get(url)

# output the full-page HTML
source = driver.page_source

# release the resources allocated by Selenium and shut down the browser
driver.quit()

# Parse the HTML
soup = BeautifulSoup(source, 'html.parser')
price_span = soup.find('span', class_=whatclass)
price = price_span.get_text(strip=True) if price_span else None
print(price)
return price

async def monitor_prices():
global xkom_price, xkom_price_nokb, xkom_price_lte, lastchecked  # Declare them as global
while True:
# Fetch prices for the two URLs
xkom_new_price_nokb = await fetch_price("https://www.x-kom.pl/p/1126296-tablety-11-lenovo-tab-p11-6gb-128gb-android-12l-wifi-gen-2.html", 'sc-jnqLxu cjLwnY parts__Price-sc-53da58c9-2 hbVORa')
await asyncio.sleep(3)
xkom_new_price_lte = await fetch_price("https://www.x-kom.pl/p/1145247-tablety-11-lenovo-tab-p11-6gb-128gb-android-12l-lte-gen-2.html", 'sc-jnqLxu cjLwnY parts__Price-sc-53da58c9-2 hbVORa')
await asyncio.sleep(3)
xkom_new_price = await fetch_price("https://www.x-kom.pl/p/1152486-tablety-11-lenovo-tab-p11-6gb-128gb-android-12l-wifi-gen-2.html", 'sc-jnqLxu cjLwnY parts__Price-sc-53da58c9-2 hbVORa')
await asyncio.sleep(3)

# Get the current time as the last checked time
lastchecked = time.strftime('%Y-%m-%d %H:%M:%S')

# Check if prices have changed
channel2 = bot.get_channel(1299401805683494942)

if xkom_new_price_nokb and xkom_new_price_nokb != xkom_price_nokb:
await channel2.send(f"WiFi (no keyboard) price on x-kom changed from {xkom_price_nokb} to {xkom_new_price_nokb}")
xkom_price_nokb = xkom_new_price_nokb

if xkom_new_price and xkom_new_price != xkom_price:
await channel2.send(f"WiFi price on x-kom changed from {xkom_price} to {xkom_new_price}")
xkom_price = xkom_new_price
if xkom_new_price_lte and xkom_new_price_lte != xkom_price_lte:
await channel2.send(f"WiFi/LTE price on x-kom changed from {xkom_price_lte} to {xkom_new_price_lte}")
xkom_price_lte = xkom_new_price_lte

# Update the embed message
embed = discord.Embed(title="Lenovo Tab P11 6GB/128GB", color=0x39153e)
embed.add_field(name="x-kom", value="", inline=False)
embed.add_field(name="WiFi (no keyboard)", value=xkom_new_price_nokb or "Not available", inline=True)
embed.add_field(name="WiFi", value=xkom_price or "Not available", inline=True)
embed.add_field(name="WiFi/LTE", value=xkom_price_lte or "Not available", inline=True)
embed.add_field(name="Last checked", value=lastchecked, inline=False)
await embedsent.edit(embed=embed)

# Wait for 5 minutes
await asyncio.sleep(300)

# Run the bot
bot.run('token')
src с FirefoxDriver:

Код: Выделить всё

import asyncio
import discord
from discord.ext import commands
import time
from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

intents = discord.Intents.default()
async def fetch_price(url, whatclass):
options = Options()
options.add_argument("-headless")
options.set_preference("javascript.enabled", True)

driver = webdriver.Firefox(options=options)
driver.get(url)

# output the full-page HTML
source = driver.page_source

# release the resources allocated by Selenium and shut down the browser
driver.quit()

# Parse the HTML
soup = BeautifulSoup(source, 'html.parser')
price_span = soup.find('span', class_=whatclass)
price = price_span.get_text(strip=True) if price_span else None
print(price)
return price

async def monitor_prices():
global xkom_price, xkom_price_nokb, xkom_price_lte, lastchecked  # Declare them as global
while True:
# Fetch prices for the two URLs
xkom_new_price_nokb = await fetch_price("https://www.x-kom.pl/p/1126296-tablety-11-lenovo-tab-p11-6gb-128gb-android-12l-wifi-gen-2.html",  'sc-jnqLxu cjLwnY parts__Price-sc-53da58c9-2 hbVORa')
await asyncio.sleep(3)
xkom_new_price_lte = await fetch_price("https://www.x-kom.pl/p/1145247-tablety-11-lenovo-tab-p11-6gb-128gb-android-12l-lte-gen-2.html", 'sc-jnqLxu cjLwnY parts__Price-sc-53da58c9-2 hbVORa')
await asyncio.sleep(3)
xkom_new_price = await fetch_price("https://www.x-kom.pl/p/1152486-tablety-11-lenovo-tab-p11-6gb-128gb-android-12l-wifi-gen-2.html", 'sc-jnqLxu cjLwnY parts__Price-sc-53da58c9-2 hbVORa')
await asyncio.sleep(3)

# Get the current time as the last checked time
lastchecked = time.strftime('%Y-%m-%d %H:%M:%S')

# Check if prices have changed
channel2 = bot.get_channel(1299401805683494942)

if xkom_new_price_nokb and xkom_new_price_nokb != xkom_price_nokb:
await channel2.send(f"WiFi (no keyboard) price on x-kom changed from {xkom_price_nokb} to {xkom_new_price_nokb}")
xkom_price_nokb = xkom_new_price_nokb

if xkom_new_price and xkom_new_price != xkom_price:
await channel2.send(f"WiFi price on x-kom changed from {xkom_price} to {xkom_new_price}")
xkom_price = xkom_new_price
if xkom_new_price_lte and xkom_new_price_lte != xkom_price_lte:
await channel2.send(f"WiFi/LTE price on x-kom changed from {xkom_price_lte} to {xkom_new_price_lte}")
xkom_price_lte = xkom_new_price_lte

# Update the embed message
embed = discord.Embed(title="Lenovo Tab P11 6GB/128GB", color=0x39153e)
embed.add_field(name="x-kom", value="", inline=False)
embed.add_field(name="WiFi (no keyboard)", value=xkom_new_price_nokb or "Not available", inline=True)
embed.add_field(name="WiFi", value=xkom_price or "Not available", inline=True)
embed.add_field(name="WiFi/LTE", value=xkom_price_lte or "Not available", inline=True)
embed.add_field(name="Last checked", value=lastchecked, inline=False)
await embedsent.edit(embed=embed)

# Wait for 5 minutes
await asyncio.sleep(300)

# Run the bot
bot.run('token')
изменение веб-драйвера с Firefox на Chrome, ошибка изменилась, но все еще не работает, я попытался загрузить двоичный файл Firefox вручную и развернуть его с помощью репозитория, но это не сработало, я попытался установить интегрированный с Heroku -firefox-geckodriver buildpack, но он не сработал, так как мне нужна версия Heroku 20, 18 или 16, а у меня 24, и я не знаю, как понизить версию

Подробнее здесь: https://stackoverflow.com/questions/791 ... -on-heroku
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Chromedriver и firefoxdriver аварийно завершают работу/останавливаются на героку
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Chromedriver и firefoxdriver аварийно завершают работу/останавливаются на героку
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Потоки Python в Mac OS аварийно завершают работу с типом NSException
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Я хочу узнать о веб-хостинге и героку [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Асинхронные вызовы EventStore завершают программу
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»