Rumah > Artikel > pembangunan bahagian belakang > Penjelasan terperinci tentang fungsi pengendalian pengecualian halaman dan cuba semula dalam pelaksanaan Python bagi aplikasi pemerolehan pelayar tanpa kepala
Penjelasan terperinci tentang pelaksanaan Python bagi fungsi pengendalian pengecualian halaman dan cuba semula untuk aplikasi pengumpulan penyemak imbas tanpa kepala
Pengenalan:
Dalam perangkak web, menggunakan penyemak imbas tanpa kepala untuk pengumpulan data telah menjadi cara yang sangat biasa. Pelayar tanpa kepala boleh mensimulasikan tingkah laku penyemak imbas sebenar, boleh menghuraikan kandungan yang dijana oleh JavaScript, dan juga menyediakan lebih banyak kawalan permintaan rangkaian dan fungsi pemprosesan halaman. Walau bagaimanapun, disebabkan kerumitan persekitaran rangkaian, kami mungkin menghadapi pelbagai pengecualian semasa mengumpul halaman, yang memerlukan kami mengendalikan pengecualian dan mereka bentuk mekanisme cuba semula untuk memastikan integriti dan ketepatan data.
Teks:
Dalam Python, kami boleh menggunakan perpustakaan Selenium untuk bekerja dengan penyemak imbas tanpa kepala seperti Chrome Tanpa Kepala atau Firefox untuk melaksanakan fungsi pengumpulan halaman. Berikut akan memperkenalkan secara terperinci cara melaksanakan fungsi pengendalian pengecualian halaman dan cuba semula dalam Python.
Langkah 1: Pasang dan konfigurasikan pustaka dan pemacu yang diperlukan
Pertama, kita perlu memasang pustaka Selenium dan pemacu penyemak imbas tanpa kepala yang diperlukan, seperti ChromeDriver atau GeckoDriver (untuk Firefox). Anda boleh memasang perpustakaan yang diperlukan melalui pip:
pip install selenium
Pada masa yang sama, anda juga perlu memuat turun pemacu penyemak imbas tanpa kepala yang sepadan untuk memastikan ia sepadan dengan versi penyemak imbas yang dipasang.
Langkah 2: Import perpustakaan yang diperlukan dan tetapkan pilihan penyemak imbas
Dalam skrip Python, kita perlu mengimport perpustakaan Selenium bersama-sama dengan perpustakaan lain yang diperlukan seperti yang ditunjukkan di bawah:
from selenium import webdriver from selenium.webdriver.chrome.options import Options
Seterusnya, kita boleh menetapkan pilihan penyemak imbas , termasuk mendayakan mod tanpa kepala, menetapkan pengepala permintaan, menetapkan proksi, dsb. Berikut ialah contoh:
options = Options() options.add_argument('--headless') # 启用无头模式 options.add_argument('--no-sandbox') # 避免在Linux上的一些问题 options.add_argument('--disable-dev-shm-usage')
Bergantung pada keperluan sebenar, gelagat penyemak imbas boleh disesuaikan dengan lebih banyak pilihan yang disediakan dalam dokumentasi Selenium.
Langkah 3: Tentukan fungsi pengendalian pengecualian dan cuba semula logik
Apabila mengumpul halaman, kami mungkin menghadapi pelbagai pengecualian rangkaian, seperti tamat masa rangkaian, ralat memuatkan halaman, dsb. Untuk meningkatkan kadar kejayaan pengumpulan, kami boleh menentukan fungsi pengendalian pengecualian untuk mengendalikan pengecualian ini dan mencuba semula.
Berikut ialah contoh fungsi pengendalian pengecualian dan logik cuba semula:
def handle_exceptions(driver): try: # 进行页面采集操作 # ... except TimeoutException: print('页面加载超时,正在进行重试...') # 刷新页面重试 driver.refresh() handle_exceptions(driver) except WebDriverException: print('浏览器异常,正在进行重试...') # 重新创建浏览器实例重试 driver.quit() driver = webdriver.Chrome(options=options) handle_exceptions(driver) except Exception as e: print('其他异常:', str(e)) # 其他异常处理逻辑 # ... # 创建浏览器实例 driver = webdriver.Chrome(options=options) # 调用异常处理函数开始采集 handle_exceptions(driver)
Dalam fungsi pengendalian pengecualian, kami mula-mula menggunakan pernyataan cuba-kecuali untuk menangkap pengecualian seperti TimeoutException dan WebDriverException. Untuk TimeoutException, kami boleh cuba memuat semula halaman untuk mencuba lagi; untuk WebDriverException, mungkin contoh penyemak imbas mempunyai pengecualian, dan kami boleh cuba mencipta semula contoh penyemak imbas untuk mencuba lagi. Pada masa yang sama, kami juga boleh melakukan logik pengendalian pengecualian lain mengikut keadaan tertentu.
Langkah 4: Tambahkan had pada bilangan percubaan semula
Untuk mengelakkan percubaan semula tanpa had, kami boleh menambah had pada bilangan percubaan semula dalam fungsi pengendalian pengecualian. Berikut ialah contoh:
RETRY_LIMIT = 3 def handle_exceptions(driver, retry_count=0): try: # 进行页面采集操作 # ... except TimeoutException: print('页面加载超时,正在进行重试...') if retry_count < RETRY_LIMIT: # 刷新页面重试 driver.refresh() handle_exceptions(driver, retry_count+1) except WebDriverException: print('浏览器异常,正在进行重试...') if retry_count < RETRY_LIMIT: # 重新创建浏览器实例重试 driver.quit() driver = webdriver.Chrome(options=options) handle_exceptions(driver, retry_count+1) except Exception as e: print('其他异常:', str(e)) if retry_count < RETRY_LIMIT: # 其他异常处理逻辑 # ... handle_exceptions(driver, retry_count+1) # 创建浏览器实例 driver = webdriver.Chrome(options=options) # 调用异常处理函数开始采集 handle_exceptions(driver)
Dalam contoh di atas, kami menentukan pemalar RETRY_LIMIT untuk mengehadkan bilangan percubaan semula. Jika bilangan percubaan semula kurang daripada had, cuba semula akan dilakukan, jika tidak, ia tidak akan dicuba semula.
Ringkasan:
Artikel ini memperincikan cara menggunakan perpustakaan Selenium dan penyemak imbas tanpa kepala dalam Python untuk melaksanakan fungsi pengendalian dan cuba semula pengecualian halaman. Dengan menetapkan pilihan penyemak imbas dengan betul, mentakrifkan fungsi pengendalian pengecualian dan cuba semula logik, dan menambah had pada bilangan percubaan semula, kami boleh meningkatkan kadar kejayaan pengumpulan halaman dan memastikan integriti dan ketepatan data.
Contoh kod telah disediakan dalam langkah yang berkaitan, dan pembaca boleh mengubah suai dan melanjutkannya mengikut keperluan sebenar mereka. Saya harap artikel ini dapat memberikan bantuan dan rujukan untuk pembangun yang menggunakan penyemak imbas tanpa kepala untuk pengumpulan data, mempercepatkan kecekapan pembangunan dan meningkatkan kualiti koleksi.
Atas ialah kandungan terperinci Penjelasan terperinci tentang fungsi pengendalian pengecualian halaman dan cuba semula dalam pelaksanaan Python bagi aplikasi pemerolehan pelayar tanpa kepala. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!