Nettskraping og boter · leksjon

Logging og feilhåndtering for boter

Bygg robuste, enkle boter ved å legge til strukturert logging og kontrollert feilhåndtering, slik at feil blir synlige og kan håndteres.

Leksjon 4 av 413 trinn

Logging og feilhåndtering for boter er en gratis leksjon i Nettskraping og boter på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Nettskraping og boter, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Nettskraping og boter inneholder totalt 4 leksjoner.

Hvorfor roboter trenger logger

En bot kjører uten tilsyn, ofte etter en tidsplan. Når noe går galt, følger du ikke med. Logging etterlater et spor, slik at du kan finne ut hva som skjedde i etterkant.

Uten logger kan en stille feil gå ubemerket i flere dager.

print() er ikke logging

Nybegynnere bruker print(), men det har ingen nivåer, ingen tidsstempler og ingen enkel måte å omdirigere til en fil på. Pythons logging-modul løser alt dette.

print('something happened')  # no level, no time, hard to manage

Sette opp logging

Konfigurer logging én gang ved oppstart. Angi et format med tidsstempel og nivå, og velg hvor utdataene skal sendes.

import logging

logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s %(levelname)s %(message)s'
)
log = logging.getLogger('bot')
log.info('Bot started')

Loggnivåer

Nivåer lar deg styre detaljnivået:

  • DEBUG detaljert sporing.
  • INFO normal fremdrift.
  • WARNING noe uvanlig, men mulig å håndtere.
  • ERROR en operasjon mislyktes.
  • CRITICAL boten kan ikke fortsette.
log.debug('fetched 12 rows')
log.warning('retrying after timeout')
log.error('login failed')

Logge til en fil

For roboter uten tilsyn bør du skrive logger til en fil, slik at du kan gå gjennom dem senere. En roterende håndterer begrenser filstørrelsen.

from logging.handlers import RotatingFileHandler

handler = RotatingFileHandler('bot.log', maxBytes=1_000_000, backupCount=3)
log.addHandler(handler)

Fange opp unntak

Legg risikable operasjoner i try/except, slik at én feil ikke stopper hele kjøringen. Logg feilen sammen med relevant kontekst.

try:
    submit_form(data)
except Exception as e:
    log.error('form submission failed: %s', e)

Logge fullstendige stacktracer

Bruk log.exception i en except-blokk for å ta vare på hele stacktracen. Den er svært nyttig ved feilsøking.

try:
    risky()
except Exception:
    log.exception('unexpected error in risky()')

Prøve på nytt etter midlertidige feil

Nettverksforstyrrelser er vanlige. Fang dem opp og prøv på nytt noen ganger før du gir opp, og logg hvert forsøk.

for attempt in range(3):
    try:
        fetch()
        break
    except ConnectionError:
        log.warning('attempt %d failed, retrying', attempt + 1)
else:
    log.error('all attempts failed')

Feile tydelig

Stille feil er farlige. Ved kritiske feil bør du eskalere: send en e-postvarsling, skriv en markørfil eller avslutt med en kode som ikke er null, slik at en planlegger oppdager det.

import sys
if not data:
    log.critical('no data scraped, aborting')
    sys.exit(1)

Ryddig avslutning

Frigjør alltid ressurser, også ved feil. En finally-blokk eller konteksthåndterere sørger for at nettlesere lukkes og filer tømmes, uansett hva som gikk galt.

try:
    run_bot()
finally:
    driver.quit()
    log.info('bot finished')

Strukturert loggingskontekst

Legg kontekst til hver logglinje, for eksempel gjeldende URL eller element-ID, slik at du straks vet hvilken post en melding gjelder når du går gjennom en lang logg.

log.info('scraped item %s from %s', item_id, url)

Hurtigsjekk

Test forståelsen av logging og feilhåndtering for roboter.

Oppsummering

Du har lært å gjøre enkle roboter robuste: bruke logging-modulen i stedet for print, velge passende nivåer, logge til roterende filer, fange opp og logge unntak med stacktracer, prøve på nytt etter midlertidige feil, feile tydelig ved kritiske problemer og avslutte på en ryddig måte.

Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Logging og feilhåndtering for boter» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Nettskraping og boter, inkludert «Logging og feilhåndtering for boter», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Nettskraping og boter inneholder totalt 4 leksjoner.

Hva lærer jeg i «Logging og feilhåndtering for boter»?

Bygg robuste, enkle boter ved å legge til strukturert logging og kontrollert feilhåndtering, slik at feil blir synlige og kan håndteres. Du øver på Nettskraping og boter med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Nettskraping og boter?

Ingen tidligere erfaring er nødvendig. Nettskraping og boter på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Logging og feilhåndtering for boter»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Nettskraping og boter-leksjonen?

Ja. Alle Nettskraping og boter-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Definering av botmål
  2. Automatisering av enkle skjemainnsendinger
  3. Planlegging av grunnleggende oppgaver
  4. Logging og feilhåndtering for boter
← Tilbake til Nettskraping og boter