Fahami ciri rangka kerja gores dan tingkatkan kecekapan pembangunan perangkak

WBOY
Lepaskan: 2024-01-19 10:07:05
asal
949 orang telah melayarinya

Fahami ciri rangka kerja gores dan tingkatkan kecekapan pembangunan perangkak

Rangka kerja Scrapy ialah rangka kerja sumber terbuka berdasarkan Python, terutamanya digunakan untuk merangkak data tapak web Ia mempunyai ciri-ciri berikut:

  1. Pemprosesan tak segerak: Scrapy menggunakan pemprosesan tak segerak dan boleh mengendalikan berbilang permintaan dan data rangkaian pada masa yang sama. masa. Tugasan menghurai meningkatkan kelajuan tangkapan data perangkak.
  2. Memudahkan pengekstrakan data: Scrapy menyediakan pemilih XPath dan CSS yang berkuasa untuk memudahkan pengguna mengekstrak data. Pengguna boleh menggunakan pemilih ini untuk mengekstrak data daripada halaman web dengan cepat dan tepat.
  3. Reka bentuk modular: Rangka kerja Scrapy menyediakan banyak modul yang boleh dipadankan secara bebas mengikut keperluan, seperti pemuat turun, pengurai, saluran paip, dll.
  4. Peluasan yang mudah: Rangka kerja Scrapy menyediakan API yang kaya yang boleh mengembangkan fungsi yang diperlukan pengguna dengan mudah.

Yang berikut akan memperkenalkan cara menggunakan rangka kerja Scrapy untuk meningkatkan kecekapan pembangunan perangkak melalui contoh kod khusus.

Mula-mula, kita perlu memasang rangka kerja Scrapy:

pip install scrapy
Salin selepas log masuk

Seterusnya, kita boleh mencipta projek Scrapy baharu:

scrapy startproject myproject
Salin selepas log masuk

Ini akan mencipta folder yang dipanggil "projek saya" dalam direktori semasa, yang mengandungi keseluruhan struktur asas projek Scrapy .

Mari kita tulis perangkak yang mudah. Katakan kita ingin mendapatkan tajuk filem, rating dan maklumat pengarah filem terbaru daripada laman web filem Douban. Mula-mula, kita perlu mencipta Labah-labah baharu:

import scrapy

class DoubanSpider(scrapy.Spider):
    name = "douban"
    start_urls = [
        'https://movie.douban.com/latest',
    ]

    def parse(self, response):
        for movie in response.xpath('//div[@class="latest"]//li'):
            yield {
                'title': movie.xpath('a/@title').extract_first(),
                'rating': movie.xpath('span[@class="subject-rate"]/text()').extract_first(),
                'director': movie.xpath('span[@class="subject-cast"]/text()').extract_first(),
            }
Salin selepas log masuk

Dalam Labah-labah ini, kami mentakrifkan Labah-labah bernama "douban" dan menentukan URL awal sebagai URL halaman filem terbaharu rasmi Douban Movies. Dalam kaedah parse, kami menggunakan pemilih XPath untuk mengekstrak nama, penilaian dan maklumat pengarah bagi setiap filem dan menggunakan hasil untuk mengembalikan keputusan.

Seterusnya, kami boleh membuat tetapan yang berkaitan dalam fail settings.py projek, seperti menetapkan User-Agent dan meminta kelewatan:

USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
DOWNLOAD_DELAY = 5
Salin selepas log masuk

Di sini kami menetapkan User-Agent dan menetapkan kelewatan muat turun kepada 5 Saat.

Akhir sekali, kita boleh memulakan perangkak dari baris arahan dan mengeluarkan hasil:

scrapy crawl douban -o movies.json
Salin selepas log masuk

Ini akan memulakan Spider yang baru kita buat dan mengeluarkan hasilnya ke fail yang dipanggil "movies.json".

Dengan menggunakan rangka kerja Scrapy, kami boleh membangunkan perangkak dengan cepat dan cekap tanpa perlu berurusan dengan terlalu banyak butiran sambungan rangkaian dan permintaan tak segerak. Fungsi berkuasa dan reka bentuk rangka kerja Scrapy yang mudah digunakan membolehkan kami menumpukan pada pengekstrakan dan pemprosesan data, sekali gus meningkatkan kecekapan pembangunan perangkak.

Atas ialah kandungan terperinci Fahami ciri rangka kerja gores dan tingkatkan kecekapan pembangunan perangkak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!