Hej, mój bot na allegro, działa... ale na innej platformie.

Hej, mój bot na allegro, działa... ale na innej platformie.
Amadeusz Leonard Feliks
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Okey, więc zamysł jest prosty: jak zmienia się treść aukcji, to bot wysyła sygnał do loga, co 5 - 30 minut odświeżająć serwer. I rzeczywiście działa na jednej stronie www, ale na allegro nie. O co chodzi, może ktoś umie pomóc ? Już czuję się jak by mi się do połowy udało, ale może to tylko uczucie że da się tak zrobić.

Kopiuj
import time
import requests
from datetime import datetime

url = "https://www.blocket.se/annons/stockholm/canon_r50/1213233090"  # replace with your website
keyword = "touchskärm"

headers = {
    "User-Agent": (
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
        "AppleWebKit/537.36 (KHTML, like Gecko) "
        "Chrome/127.0.0.1 Safari/537.36"
    ),
    "Accept-Language": "pl-PL,pl;q=0.9,en-US;q=0.8,en;q=0.7"
}

week_seconds = 7 * 24 * 60 * 60   # tydzień
interval = 30 * 60                # 30 minut

start = time.time()

while time.time() - start < week_seconds:
    try:
        response = requests.get(url, timeout=10)
        now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

        if keyword.lower() in response.text.lower():
            log_line = f"[{now}] ZNALEZIONO słowo '{keyword}'. Kończę działanie.\n"
            with open("log.txt", "a", encoding="utf-8") as f:
                f.write(log_line)
            print(log_line.strip())
            break
        else:
            log_line = f"[{now}] Nie znaleziono słowa '{keyword}'. Sprawdzę za 30 minut.\n"
            with open("log.txt", "a", encoding="utf-8") as f:
                f.write(log_line)
            print(log_line.strip())

    except Exception as e:
        now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        log_line = f"[{now}] BŁĄD: {e}\n"
        with open("log.txt", "a", encoding="utf-8") as f:
            f.write(log_line)
        print(log_line.strip())

    time.sleep(interval)


import time
import requests
from datetime import datetime

urls = [
    "https://allegro.pl/oferta/album-na-zdjecia-00001899-10x15-17841317036",         # <- pierwszy adres
    "https://allegro.pl/oferta/stockholm-drewniana-ramka-na-zdjecia-30-x-30-cm-17841293589"     # <- drugi adres
]
keyword = "skończyła"

# Nagłówki udające przeglądarkę Chrome
headers = {
    "User-Agent": (
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
        "AppleWebKit/537.36 (KHTML, like Gecko) "
        "Chrome/127.0.0.1 Safari/537.36"
    ),
    "Accept-Language": "pl-PL,pl;q=0.9,en-US;q=0.8,en;q=0.7"
}

week_seconds = 7 * 24 * 60 * 60   # tydzień
interval = 5 * 60                # 5 minut

start = time.time()

while time.time() - start < week_seconds:
    for url in urls:  # sprawdzamy każdy link po kolei
        try:
            response = requests.get(url, headers=headers, timeout=10)
            now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

            if keyword.lower() in response.text.lower():
                log_line = f"[{now}] ZNALEZIONO słowo '{keyword}' na stronie: {url}. Kończę działanie.\n"
                with open("log.txt", "a", encoding="utf-8") as f:
                    f.write(log_line)
                print(log_line.strip())
                exit(0)  # zakończ cały program
            else:
                log_line = f"[{now}] Nie znaleziono słowa '{keyword}' na stronie: {url}. Sprawdzę za 5 minut.\n"
                with open("log.txt", "a", encoding="utf-8") as f:
                    f.write(log_line)
                print(log_line.strip())

        except Exception as e:
            now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            log_line = f"[{now}] BŁĄD przy stronie {url}: {e}\n"
            with open("log.txt", "a", encoding="utf-8") as f:
                f.write(log_line)
            print(log_line.strip())

    time.sleep(interval)
Kopiuj
[2025-09-01 20:12:53] ZNALEZIONO słowo 'touchskärm'. Kończę działanie.
[2025-09-01 20:34:24] Nie znaleziono słowa 'skończyła' na stronie: https://allegro.pl/oferta/album-na-zdjecia-00001899-10x15-17841317036. Sprawdzę za 5 minut.
[2025-09-01 20:34:25] Nie znaleziono słowa 'skończyła' na stronie: https://allegro.pl/oferta/stockholm-drewniana-ramka-na-zdjecia-30-x-30-cm-17841293589. Sprawdzę za 5 minut.
[2025-09-01 20:44:29] Nie znaleziono słowa 'skończyła' na stronie: https://allegro.pl/oferta/album-na-zdjecia-00001899-10x15-17841317036. Sprawdzę za 5 minut.
[2025-09-01 20:44:29] Nie znaleziono słowa 'skończyła' na stronie: https://allegro.pl/oferta/stockholm-drewniana-ramka-na-zdjecia-30-x-30-cm-17841293589. Sprawdzę za 5 minut.
[2025-09-01 20:44:32] ZNALEZIONO słowo 'touchskärm'. Kończę działanie.
[2025-09-01 20:49:51] Nie znaleziono słowa 'skończyła' na stronie: https://allegro.pl/oferta/album-na-zdjecia-00001899-10x15-17841317036. Sprawdzę za 5 minut.
[2025-09-01 20:49:52] Nie znaleziono słowa 'skończyła' na stronie: https://allegro.pl/oferta/stockholm-drewniana-ramka-na-zdjecia-30-x-30-cm-17841293589. Sprawdzę za 5 minut.

Z allegro próbowałem tekst z różnych sekcji oraz przez DevTools, niestety jest problem. Czy może te elementy się tam dynamicznie ładują przez js ? Co robię źle ?

hzmzp
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 754
1

Po co tak kombinujesz?
Użyj API Allegro.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.