cari
Rumahpembangunan bahagian belakangTutorial PythonKenapa saya mendapat ralat 'senarai keluar dari jarak' apabila menggunakan crawler python?

Kenapa saya mendapat ralat

Ralat "Senarai Indeks Keluar Daripada" dalam Python Crawler: Sebab dan Penyelesaian

Apabila menggunakan Python dan BeautifulSoup untuk merangkak web, anda sering menemui list index out of range kesilapan. Masalah ini boleh berlaku walaupun kod tidak diubahsuai, terutamanya apabila berurusan dengan laman web dinamik atau perubahan struktur laman web. Artikel ini menganalisis punca kesilapan ini dan menyediakan penyelesaian yang berkesan.

Berikut adalah kod sampel yang menunjukkan apa yang mungkin menyebabkan kesilapan ini berlaku:

 permintaan import
dari bs4 import cantikSoup

headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) Applewebkit/537.36 (khtml, seperti gecko) Chrome/124.0.0.0 Safari/537.36 edg/124.0.0'}
respons = requests.get ("https://www.iqiyi.com/ranks1/3/0", headers = headers)
cetak (respons.status_code)
respons = response.text
sup = indahSoup (respons, "html.parser")

def extract_data ():
    tajuk = [title.get_text (). Strip () untuk tajuk dalam soup.find_all ("div", kelas _ = "rvi__tit1")]
    haba = [heat.get_text (). Strip () untuk haba dalam sup.find_all ("span", kelas _ = "rvi__index__num")]
    Pengenalan = [intro.get_text (). Strip () untuk intro dalam sup.find_all ("p", kelas _ = "rvi__des2")]
    Tajuk kembali, panas, perkenalan

def display_data (tajuk, haba, perkenalan):
    min_len = min (len (tajuk), len (haba), len (perkenalan))
    untuk saya dalam julat (min_len):
        cetak (f "ranking: {i 1}, tajuk: {tajuk [i]}, populariti: {heat [i]}, pengenalan: {pengenalan [i]}")


jika __name__ == '__main__':
    tajuk, haba, pengenalan = extract_data ()
    display_data (tajuk, haba, perkenalan)

Dalam contoh ini, list index out of range biasanya berlaku dalam fungsi display_data . Alasannya ialah: panjang tiga senarai titles , heat , dan introductions mungkin tidak konsisten. Jika salah satu senarai mempunyai panjang kurang daripada 10 (atau julat gelung), ralat indeks yang terikat akan berlaku apabila mengakses elemen senarai.

Penyelesaian:

Kuncinya adalah untuk memastikan bahawa sebelum mengakses elemen senarai, panjang senarai diperiksa dan hanya elemen dalam julat indeks yang sah diakses. Kod yang lebih baik adalah seperti berikut:

 permintaan import
dari bs4 import cantikSoup

# ... (tajuk dan permintaan tetap sama) ...

def extract_data ():
    # ... (Pengekstrakan tetap sama) ...

def display_data (tajuk, haba, perkenalan):
    min_len = min (len (tajuk), len (haba), len (perkenalan)) # Cari senarai terpendek
    untuk saya dalam julat (min_len):
        cetak (f "ranking: {i 1}, tajuk: {tajuk [i]}, populariti: {heat [i]}, pengenalan: {pengenalan [i]}")


jika __name__ == '__main__':
    tajuk, haba, pengenalan = extract_data ()
    display_data (tajuk, haba, perkenalan)

Dengan mengira panjang terpendek dari tiga senarai min_len dan menggunakan min_len sebagai julat gelung, kami memastikan bahawa tiada elemen di luar julat indeks senarai diakses, dengan berkesan mengelakkan list index out of range . Ini adalah cara pemprosesan yang lebih mantap yang boleh menyesuaikan diri dengan perubahan dalam struktur laman web yang berbeza dan jumlah data. Di samping itu, menambahkan mekanisme pengendalian ralat (seperti blok try-except ) juga merupakan amalan pengaturcaraan yang baik yang dapat mengendalikan situasi yang lebih kompleks.

Atas ialah kandungan terperinci Kenapa saya mendapat ralat 'senarai keluar dari jarak' apabila menggunakan crawler python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Bagaimana anda menambah elemen ke array python?Bagaimana anda menambah elemen ke array python?Apr 30, 2025 am 12:19 AM

Inpython, youAppendElementStoalistusingTheAppend () method.1) useAppend () forsingLements: my_list.append (4) .2) useextend () or = formultipleelements: my_list.extend (lain_list) ormy_list = [4,5,6] .3) UseInsert () ForSpecificPositions: my_list.insert (1,5) .beaware

Bagaimana anda menyahpepijat isu berkaitan shebang?Bagaimana anda menyahpepijat isu berkaitan shebang?Apr 30, 2025 am 12:17 AM

Kaedah untuk debug masalah shebang termasuk: 1. Semak garis shebang untuk memastikan ia adalah baris pertama skrip dan tidak ada ruang prefixed; 2. Sahkan sama ada laluan penterjemah adalah betul; 3. Panggil jurubahasa secara langsung untuk menjalankan skrip untuk mengasingkan masalah shebang; 4. Gunakan tali atau amanah untuk mengesan panggilan sistem; 5. Periksa kesan pembolehubah persekitaran pada shebang.

Bagaimana anda membuang elemen dari array python?Bagaimana anda membuang elemen dari array python?Apr 30, 2025 am 12:16 AM

PythonlistscanbemanipulaterAnseveralMethodstoremoveelements: 1) theremove () methodRemoveStHefirStoccrencrentrenceAfaspiedValue.2)

Apakah jenis data yang boleh disimpan dalam senarai python?Apakah jenis data yang boleh disimpan dalam senarai python?Apr 30, 2025 am 12:07 AM

Pythonlistscanstoreanydatatype, termasuk interintegers, strings, floats, booleans, otherlists, dandictionaries

Apakah beberapa operasi biasa yang boleh dilakukan pada senarai Python?Apakah beberapa operasi biasa yang boleh dilakukan pada senarai Python?Apr 30, 2025 am 12:01 AM

PythonlistsSupportnumerousoperations: 1) addingElementSwithAppend (), extend (), andInsert ()

Bagaimana anda membuat tatasusunan pelbagai dimensi menggunakan numpy?Bagaimana anda membuat tatasusunan pelbagai dimensi menggunakan numpy?Apr 29, 2025 am 12:27 AM

Buat tatasusunan pelbagai dimensi dengan numpy dapat dicapai melalui langkah-langkah berikut: 1) Gunakan fungsi numpy.array () untuk membuat array, seperti Np.Array ([[1,2,3], [4,5,6]]) untuk membuat array 2D; 2) Gunakan np.zeros (), np.ones (), np.random.random () dan fungsi lain untuk membuat array yang diisi dengan nilai tertentu; 3) Memahami sifat bentuk dan saiz array untuk memastikan bahawa panjang sub-array adalah konsisten dan mengelakkan kesilapan; 4) Gunakan fungsi np.reshape () untuk mengubah bentuk array; 5) Perhatikan penggunaan memori untuk memastikan bahawa kod itu jelas dan cekap.

Terangkan konsep 'penyiaran' dalam array Numpy.Terangkan konsep 'penyiaran' dalam array Numpy.Apr 29, 2025 am 12:23 AM

Broadcastinginginnumpyisamethodtoperformoperationsonarraysofdifferentshapesbyautomaticallyaligningthem.itsImplifiescode, enhancesreadability, andboostsperformance.here'showitworks: 1) smallerarraysarepaddedwithonestomatchdimensions.2) CompatibeSt

Terangkan cara memilih antara senarai, array.array, dan array numpy untuk penyimpanan data.Terangkan cara memilih antara senarai, array.array, dan array numpy untuk penyimpanan data.Apr 29, 2025 am 12:20 AM

Forpythondatastorage, chooselistsforflexabilityWithMixedDatatypes, array.arrayformemory-efficienthomogeneousnumericaldata, andnumpyarraysforadvancednumericalcomputing.listsareversatileButlessefficefientfientfientfientfientfientfientfientfientfientfientfientforydodeSforayDataSetSetShiSforayDataSetSetShiSforayDataSetSetShiSforayDataSetSetShoFficeSforaydataSetShoSforayDataSetsforayDataSetsforayDataSetsforaydataSetShiSforayDodeSforayDodeSforaydataSetRaydataSetRaydataSetRaydataSet

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna