Pengikisan Web dan Pembangunan Bot · Pelajaran

Pembalakan dan Pengendalian Ralat untuk Bot

Bina bot ringkas yang tahan lasak dengan menambah pembalakan berstruktur dan pengendalian ralat berhemah supaya kegagalan dapat dilihat dan dipulihkan.

Pelajaran 4 daripada 413 langkah

Pembalakan dan Pengendalian Ralat untuk Bot ialah pelajaran Pengikisan Web dan Pembangunan Bot percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pengikisan Web dan Pembangunan Bot, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pengikisan Web dan Pembangunan Bot merangkumi sejumlah 4 pelajaran.

Mengapa Bot Memerlukan Log

Bot berjalan tanpa pengawasan, selalunya mengikut jadual. Apabila sesuatu rosak, Anda tidak sedang memerhatikannya. Pengelogan meninggalkan jejak supaya Anda boleh mendiagnosis perkara yang berlaku selepas itu.

Tanpa log, kegagalan senyap boleh tidak disedari selama berhari-hari.

print() Bukan Pengelogan

Pemula menggunakan print(), tetapi ia tiada aras, tiada cap masa dan tiada cara mudah untuk mengubah hala ke fail. Modul Python logging menyelesaikan semua masalah ini.

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

Menyediakan Pengelogan

Konfigurasikan pengelogan sekali ketika permulaan. Tetapkan format dengan cap masa dan aras, kemudian pilih destinasi output.

import logging

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

Aras Log

Aras membolehkan Anda mengawal tahap perincian:

  • DEBUG jejak terperinci.
  • INFO kemajuan biasa.
  • WARNING sesuatu yang ganjil tetapi boleh dipulihkan.
  • ERROR operasi gagal.
  • CRITICAL bot tidak boleh meneruskan.
log.debug('fetched 12 rows')
log.warning('retrying after timeout')
log.error('login failed')

Mengelog ke Fail

Untuk bot tanpa pengawasan, tulis log ke fail supaya Anda boleh menyemaknya kemudian. Pengendali berputar mengehadkan saiz fail.

from logging.handlers import RotatingFileHandler

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

Menangkap Pengecualian

Bungkus operasi berisiko dalam try/except supaya satu kegagalan tidak merosakkan keseluruhan tugas. Logkan ralat bersama konteksnya.

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

Mengelog Jejak Timbunan Penuh

Gunakan log.exception di dalam blok except untuk menangkap jejak timbunan penuh, yang amat berguna bagi penyahpepijatan.

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

Mencuba Semula Kegagalan Sementara

Gangguan rangkaian ialah perkara biasa. Tangkapnya dan cuba semula beberapa kali sebelum berputus asa, sambil mengelog setiap percubaan.

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

Gagal dengan Jelas

Kegagalan senyap berbahaya. Untuk ralat kritikal, tingkatkan tindakan: hantar e-mel amaran, tulis fail penanda atau keluar dengan kod bukan sifar supaya penjadual menyedarinya.

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

Penutupan Bersih

Sentiasa lepaskan sumber walaupun berlaku ralat. Blok finally atau pengurus konteks menjamin pelayar ditutup dan fail dikosongkan tanpa mengira perkara yang berlaku.

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

Konteks Pengelogan Berstruktur

Lampirkan konteks pada setiap baris log, seperti URL semasa atau id item, supaya apabila Anda meneliti log yang panjang, Anda terus mengetahui rekod yang dirujuk oleh sesuatu mesej.

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

Semakan Pantas

Uji pemahaman Anda tentang pengelogan bot dan pengendalian ralat.

Imbas Kembali

Anda telah belajar menjadikan bot mudah tahan lasak: gunakan modul logging dan bukannya print, pilih aras yang sesuai, logkan ke fail berputar, tangkap dan logkan pengecualian bersama jejak timbunan, cuba semula ralat sementara, gagal dengan jelas bagi isu kritikal dan lakukan penutupan dengan bersih.

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “Pembalakan dan Pengendalian Ralat untuk Bot” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Pengikisan Web dan Pembangunan Bot, termasuk “Pembalakan dan Pengendalian Ralat untuk Bot”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Pengikisan Web dan Pembangunan Bot merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pembalakan dan Pengendalian Ralat untuk Bot”?

Bina bot ringkas yang tahan lasak dengan menambah pembalakan berstruktur dan pengendalian ralat berhemah supaya kegagalan dapat dilihat dan dipulihkan. Anda berlatih Pengikisan Web dan Pembangunan Bot menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Pengikisan Web dan Pembangunan Bot?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Pengikisan Web dan Pembangunan Bot di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Pembalakan dan Pengendalian Ralat untuk Bot” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pengikisan Web dan Pembangunan Bot ini?

Ya. Setiap pelajaran Pengikisan Web dan Pembangunan Bot menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Menentukan Objektif Bot
  2. Mengautomatikkan Penghantaran Borang Mudah
  3. Menjadualkan Tugasan Asas
  4. Pembalakan dan Pengendalian Ralat untuk Bot
← Kembali ke Pengikisan Web dan Pembangunan Bot