Rumah pembangunan bahagian belakang Tutorial Python Analisis mendalam tentang ciri-ciri dan kelebihan rangka kerja scrapy

Analisis mendalam tentang ciri-ciri dan kelebihan rangka kerja scrapy

Jan 19, 2024 am 09:11 AM
Ciri-ciri Kelebihan rangka kerja buruk

Analisis mendalam tentang ciri-ciri dan kelebihan rangka kerja scrapy

Rangka kerja Scrapy ialah rangka kerja perangkak Python sumber terbuka yang boleh digunakan untuk mencipta dan mengurus aplikasi yang merangkak data Ia merupakan salah satu rangka kerja perangkak paling popular pada masa ini. Rangka kerja Scrapy menggunakan IO tak segerak untuk permintaan rangkaian, yang boleh menangkap data tapak web dengan cekap dan mempunyai kelebihan kebolehskalaan dan kestabilan.

Artikel ini akan menganalisis secara mendalam ciri dan kelebihan rangka kerja Scrapy, dan menggambarkan operasinya yang cekap dan stabil melalui contoh kod khusus.

  1. Mudah dan mudah dipelajari

Rangka kerja Scrapy menggunakan bahasa Python, yang mudah dipelajari dan mempunyai halangan kemasukan yang rendah. Pada masa yang sama, ia juga menyediakan dokumentasi lengkap dan kod sampel untuk memudahkan pengguna bermula dengan cepat. Berikut ialah contoh perangkak Scrapy mudah yang boleh digunakan untuk mendapatkan tajuk dan pautan soalan popular tentang Zhihu:

import scrapy

class ZhihuSpider(scrapy.Spider):
    name = "zhihu" # 爬虫名
    start_urls = [
         'https://www.zhihu.com/hot'
    ] # 起始网站链接

    def parse(self, response):
        for question in response.css('.HotItem'):
            yield {
                'title': question.css('h2::text').get(),
                'link': question.css('a::attr(href)').get()
            }
Salin selepas log masuk

Dalam kod di atas, program perangkak bernama "zhihu" ditakrifkan dengan mewarisi kelas scrapy.Spider. Atribut start_urls ditakrifkan dalam kelas dan pautan tapak web untuk dirangkak dinyatakan dalam senarai. Kaedah parse() ditakrifkan untuk menghuraikan respons dan mendapatkan tajuk dan pautan soalan popular melalui pemilih CSS, dan mengembalikan hasilnya sebagai hasil kamus.

  1. IO tak segerak

Rangka kerja Scrapy menggunakan IO tak segerak untuk permintaan rangkaian Ia boleh menghantar berbilang permintaan tak segerak pada masa yang sama dan mengembalikan semua respons dengan serta-merta. Kaedah ini sangat meningkatkan kelajuan dan kecekapan crawler. Berikut ialah contoh kod permintaan asynchronous Scrapy yang mudah:

import asyncio
import aiohttp

async def fetch(url):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            return await response.text()

async def main():
    urls = [
        'https://www.baidu.com',
        'https://www.google.com',
        'https://www.bing.com'
    ]
    tasks = []
    for url in urls:
        tasks.append(asyncio.ensure_future(fetch(url)))
    responses = await asyncio.gather(*tasks)
    print(responses)

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())
Salin selepas log masuk

Dalam kod di atas, kaedah permintaan tak segerak dilaksanakan melalui perpustakaan asyncio dan perpustakaan aiohttp. Fungsi asynchronous fetch() ditakrifkan untuk menghantar permintaan, dan perpustakaan aiohttp digunakan untuk melaksanakan klien HTTP tak segerak. Fungsi tak segerak utama() ditakrifkan untuk memproses url, objek Masa Depan yang dikembalikan oleh fetch() ditambah pada senarai tugasan, dan akhirnya fungsi asyncio.gather() digunakan untuk mendapatkan hasil pemulangan semua tugasan.

  1. Keterluasan

Rangka kerja Scrapy menyediakan antara muka sambungan yang kaya dan pemalam Pengguna boleh menambah perisian tengah tersuai, talian paip, pemuat turun, dsb., dengan itu memanjangkan fungsi dan prestasinya. Berikut ialah contoh perisian tengah Scrapy yang mudah:

from scrapy import signals

class MyMiddleware:
    @classmethod
    def from_crawler(cls, crawler):
        o = cls()
        crawler.signals.connect(o.spider_opened, signal=signals.spider_opened)
        crawler.signals.connect(o.spider_closed, signal=signals.spider_closed)
        return o

    def spider_opened(self, spider):
        spider.logger.info('常规中间件打开: %s', spider.name)

    def spider_closed(self, spider):
        spider.logger.info('常规中间件关闭: %s', spider.name)

    def process_request(self, request, spider):
        spider.logger.info('常规中间件请求: %s %s', request.method, request.url)
        return None

    def process_response(self, request, response, spider):
        spider.logger.info('常规中间件响应: %s %s', str(response.status), response.url)
        return response

    def process_exception(self, request, exception, spider):
        spider.logger.error('常规中间件异常: %s %s', exception, request.url)
        return None
Salin selepas log masuk

Dalam kod di atas, kelas perisian tengah MyMiddleware ditakrifkan. Fungsi from_crawler() khas ditakrifkan dalam kelas untuk mengendalikan sambungan isyarat program crawler. Fungsi spider_opened() dan spider_closed() ditakrifkan untuk mengendalikan isyarat pembukaan dan penutupan perangkak. Fungsi process_request() dan process_response() ditakrifkan untuk memproses permintaan dan isyarat tindak balas. Fungsi process_exception() ditakrifkan untuk mengendalikan maklumat pengecualian.

  1. Kestabilan

Rangka kerja Scrapy sangat boleh dikonfigurasikan dan boleh laras, dan boleh melaraskan butiran perangkak mengikut keperluan pengguna, dengan itu meningkatkan kestabilan dan keteguhan perangkak rangka kerja Scrapy. Berikut ialah contoh kelewatan muat turun Scrapy dan konfigurasi tamat masa:

DOWNLOAD_DELAY = 3
DOWNLOAD_TIMEOUT = 5
Salin selepas log masuk

Dalam kod di atas, dengan menetapkan parameter DOWNLOAD_DELAY kepada 3, ini bermakna anda perlu menunggu 3 saat antara setiap dua muat turun. Dengan menetapkan parameter DOWNLOAD_TIMEOUT kepada 5, ini bermakna jika tiada respons diterima dalam masa 5 saat, ia akan tamat masa dan keluar.

Ringkasan

Rangka kerja Scrapy ialah rangka kerja perangkak Python yang cekap, berskala dan stabil dengan kelebihan pembelajaran mudah, IO tak segerak, kebolehskalaan dan kestabilan. Artikel ini memperkenalkan ciri utama dan kelebihan rangka kerja Scrapy melalui contoh kod tertentu. Bagi pengguna yang ingin membangunkan aplikasi perangkak yang cekap dan stabil, rangka kerja Scrapy sudah pasti merupakan pilihan yang baik.

Atas ialah kandungan terperinci Analisis mendalam tentang ciri-ciri dan kelebihan rangka kerja scrapy. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah sebenarnya media kendiri? Apakah ciri dan fungsi utamanya? Apakah sebenarnya media kendiri? Apakah ciri dan fungsi utamanya? Mar 21, 2024 pm 08:21 PM

Dengan perkembangan pesat Internet, konsep media kendiri telah berakar umbi dalam hati orang ramai. Jadi, apakah sebenarnya media kendiri? Apakah ciri dan fungsi utamanya? Seterusnya, kita akan meneroka isu-isu ini satu demi satu. 1. Apakah sebenarnya media kendiri? Kami-media, seperti namanya, bermakna anda adalah media. Ia merujuk kepada pembawa maklumat yang melaluinya individu atau pasukan boleh mencipta, mengedit, menerbitkan dan menyebarkan kandungan secara bebas melalui platform Internet. Berbeza dengan media tradisional, seperti akhbar, televisyen, radio, dan lain-lain, media kendiri lebih interaktif dan diperibadikan, membolehkan semua orang menjadi pengeluar dan penyebar maklumat. 2. Apakah ciri dan fungsi utama media kendiri? 1. Ambang rendah: Peningkatan media kendiri telah menurunkan ambang untuk memasuki industri media Peralatan yang rumit dan pasukan profesional tidak lagi diperlukan.

Analisis ciri dan kelebihan bahasa Go Analisis ciri dan kelebihan bahasa Go Apr 03, 2024 pm 10:06 PM

Ciri-ciri bahasa Go: Konkurensi tinggi (goroutine) Pengumpulan sampah automatik Kesederhanaan merentas platform Modulariti Kelebihan bahasa Go: Skala Keselamatan prestasi tinggi Sokongan komuniti

Apakah kelebihan dan kekurangan menggunakan aplikasi PHP menggunakan seni bina tanpa pelayan? Apakah kelebihan dan kekurangan menggunakan aplikasi PHP menggunakan seni bina tanpa pelayan? May 06, 2024 pm 09:15 PM

Menggunakan aplikasi PHP menggunakan seni bina Tanpa Pelayan mempunyai kelebihan berikut: bebas penyelenggaraan, bayar semasa anda pergi, pembangunan yang sangat berskala, dipermudahkan dan sokongan untuk pelbagai perkhidmatan. Kelemahan termasuk: masa mula sejuk, kesukaran dalam penyahpepijatan, kunci masuk vendor, pengehadan ciri dan cabaran pengoptimuman kos.

Terokai kelebihan dan senario aplikasi bahasa Go Terokai kelebihan dan senario aplikasi bahasa Go Mar 27, 2024 pm 03:48 PM

Bahasa Go ialah bahasa pengaturcaraan sumber terbuka yang dibangunkan oleh Google dan pertama kali dikeluarkan pada tahun 2007. Ia direka bentuk untuk menjadi bahasa yang mudah, mudah dipelajari, cekap dan sangat bersesuaian, serta digemari oleh semakin ramai pembangun. Artikel ini akan meneroka kelebihan bahasa Go, memperkenalkan beberapa senario aplikasi yang sesuai untuk bahasa Go dan memberikan contoh kod khusus. Kelebihan: Konkurensi yang kuat: Bahasa Go mempunyai sokongan terbina dalam untuk benang-goroutine ringan, yang boleh melaksanakan pengaturcaraan serentak dengan mudah. Goroutin boleh dimulakan dengan menggunakan kata kunci go

Penjelasan terperinci tentang kelebihan dan kegunaan pelayan Golang Penjelasan terperinci tentang kelebihan dan kegunaan pelayan Golang Mar 20, 2024 pm 01:51 PM

Golang ialah bahasa pengaturcaraan sumber terbuka yang dibangunkan oleh Google Ia cekap, pantas dan berkuasa dan digunakan secara meluas dalam pengkomputeran awan, pengaturcaraan rangkaian, pemprosesan data besar dan bidang lain. Sebagai bahasa statik yang ditaip kuat, Golang mempunyai banyak kelebihan apabila membina aplikasi sisi pelayan. Artikel ini akan menganalisis kelebihan dan utiliti pelayan Golang secara terperinci, dan menggambarkan kuasanya melalui contoh kod tertentu. 1. Pengkompil Golang berprestasi tinggi boleh menyusun kod ke dalam kod tempatan

Maksud dan ciri PHP versi NTS Maksud dan ciri PHP versi NTS Mar 26, 2024 pm 12:39 PM

PHP ialah bahasa skrip sumber terbuka yang popular yang digunakan secara meluas dalam pembangunan web. NTS dalam versi PHP adalah konsep penting Artikel ini akan memperkenalkan maksud dan ciri-ciri versi PHP NTS dan memberikan contoh kod tertentu. 1. Apakah versi PHP NTS? NTS ialah varian versi PHP yang disediakan secara rasmi oleh Zend, yang dipanggil NotThreadSafe (non-thread safe). Biasanya versi PHP dibahagikan kepada dua jenis: TS (ThreadSafe, thread safety) dan NTS

Ciri dan kelebihan satu benang Golang Ciri dan kelebihan satu benang Golang Mar 18, 2024 am 11:51 AM

Ciri dan kelebihan satu benang Golang Dengan perkembangan pesat Internet dan aplikasi mudah alih, permintaan untuk bahasa pengaturcaraan berprestasi tinggi dan berkonkurensi tinggi semakin meningkat. Dengan latar belakang ini, bahasa Go (pendek kata Golang) telah dibangunkan oleh Google dan pertama kali dikeluarkan pada tahun 2009, dan dengan cepat menjadi popular di kalangan pembangun. Golang ialah bahasa pengaturcaraan sumber terbuka yang menggunakan penaipan statik dan reka bentuk serentak Salah satu kelebihan terbesarnya ialah ciri utas tunggalnya. Golang mengguna pakai model konkurensi Goroutine.

Apakah kelebihan mempunyai akaun matriks? Bolehkah akaun biasa digunakan sebagai akaun matriks? Apakah kelebihan mempunyai akaun matriks? Bolehkah akaun biasa digunakan sebagai akaun matriks? Mar 26, 2024 am 09:31 AM

Dalam konteks media sosial yang semakin makmur hari ini, operasi akaun matriks telah menjadi strategi pemasaran yang popular. Akaun matriks yang dipanggil adalah untuk menghubungkan akaun jenama atau individu pada platform yang berbeza untuk membentuk matriks rangkaian untuk mencapai perkongsian sumber, interaksi peminat dan promosi jenama. Artikel ini akan membincangkan kelebihan membuat akaun matriks dan sama ada akaun biasa boleh digunakan sebagai akaun matriks. 1. Apakah kelebihan mempunyai akaun matriks? Mewujudkan akaun matriks boleh meluaskan pengaruh anda Dengan menerbitkan kandungan pada platform yang berbeza, anda boleh memaksimumkan pengaruh jenama atau individu anda. Platform yang berbeza mempunyai kumpulan pengguna yang unik dan kaedah komunikasi Menggunakan akaun matriks boleh merangkumi khalayak sasaran yang lebih luas, dengan itu meningkatkan keterlihatan dan pengaruh. 2. Interaksi peminat: Dengan mencipta akaun matriks, peminat boleh dinaikkan pangkat

See all articles