Rumah > pembangunan bahagian belakang > Tutorial Python > Mesti dibaca untuk perangkak baharu: Panduan Bermula Scrapy

Mesti dibaca untuk perangkak baharu: Panduan Bermula Scrapy

王林
Lepaskan: 2023-06-22 09:05:51
asal
1782 orang telah melayarinya

Dari segi pemerolehan data, perangkak web telah menjadi alat yang sangat diperlukan. Walau bagaimanapun, bagi mereka yang baru mempelajari dan menguasai teknik mengikis web, memilih alat dan rangka kerja yang betul boleh mengelirukan. Di antara banyak alat merangkak web, Scrapy ialah alat yang sangat popular. Scrapy ialah rangka kerja Python sumber terbuka yang menyediakan pendekatan yang fleksibel untuk memproses dan mengekstrak data.

Dalam artikel ini, saya akan memperkenalkan anda kepada asas Scrapy dan memperkenalkan cara membina perangkak web mudah dalam Scrapy.

1. Panduan Bermula Scrapy

  1. Memasang Scrapy

Sebelum anda bermula, anda perlu memasang Scrapy terlebih dahulu. Pemasangan Scrapy adalah sangat mudah, cuma laksanakan arahan berikut dalam baris arahan:

pip install scrapy
Salin selepas log masuk
  1. Mencipta projek Scrapy

Apabila mencipta projek Scrapy, anda boleh menggunakan arahan berikut:

scrapy startproject <project_name>
Salin selepas log masuk

Ini akan mencipta folder bernama dalam direktori semasa dan mencipta fail dan folder yang diperlukan di dalamnya.

  1. Cipta Spider

Dalam Scrapy, Spider ialah komponen utama yang kami gunakan untuk merangkak data. Spider mentakrifkan cara mula meminta URL, cara mengikuti pautan, cara menghuraikan halaman, dsb. Dalam Scrapy, kita boleh menggunakan arahan berikut untuk mencipta Spider:

scrapy genspider <spider_name> <domain_name>
Salin selepas log masuk

Ini akan mencipta Spider baharu dalam projek dan menyimpannya dalam direktori spiders. Anda boleh menentukan permintaan dan kaedah penghuraian yang kami perlukan dengan mengedit Spider.

  1. Mengkonfigurasi tapak web untuk dirangkak

Adalah sangat penting untuk mengkonfigurasi tapak web untuk dirangkak. Kami perlu menentukan URL tapak web untuk dirangkak dalam fail Spider, dan cara mengkonfigurasi permintaan. Dalam Scrapy, fungsi ini boleh dicapai dengan menulis kaedah start_requests. Kaedah ini akan dipanggil apabila Spider bermula dan menghantar permintaan daripada URL tertentu.

  1. Penghuraian halaman

Dalam Scrapy, menghuraikan halaman web ialah langkah yang paling penting. Kami boleh menggunakan pemilih XPath atau CSS untuk menghuraikan halaman untuk mengekstrak data yang diperlukan. Dalam kod Spider, anda boleh menghuraikan halaman dengan menulis kaedah parse dan menggunakan alat di atas.

  1. Menyimpan Data

Akhir sekali, kita perlu menyimpan data yang diekstrak dalam pangkalan data atau fail. Dalam Scrapy, anda boleh menggunakan Pipeline untuk mencapai operasi ini. Saluran paip ialah mekanisme untuk memproses data Ia mentakrifkan kaedah khusus untuk pembersihan data, penapisan, transformasi, penyimpanan, output, dll.

2. Contoh mudah

Seterusnya, kami akan menulis Spider mudah dan menggunakan Scrapy untuk mengambil data 250 filem Douban Teratas. Mula-mula, buat projek baharu menggunakan arahan berikut dalam baris arahan:

scrapy startproject tutorial
Salin selepas log masuk

Pergi ke folder tutorial dan buat labah-labah bernama douban_spider:

scrapy genspider douban_spider movie.douban.com
Salin selepas log masuk

Seterusnya, kita perlu mengkonfigurasi labah-labah untuk Minta halaman dan huraikan halaman web. Tambahkan kod berikut pada fail Spider:

import scrapy

class DoubanSpider(scrapy.Spider):
    name = "douban"
    allowed_domains = ["movie.douban.com"]
    start_urls = [
        "https://movie.douban.com/top250"
    ]

    def parse(self, response):
        for sel in response.xpath('//div[@class="info"]'):
            title = sel.xpath('div[@class="hd"]/a/span/text()').extract()
            yield {'title': title}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mentakrifkan nama Spider dan nama domain tapak web yang dirangkak. Seterusnya, kami mentakrifkan URL yang ingin kami rangkak dan menulis kaedah penghuraian untuk menghuraikan halaman dan mengekstrak data yang kami perlukan.

Untuk setiap elemen dengan atribut kelas "info", kami menggunakan XPath untuk mengekstrak elemen yang mengandungi tajuk filem dan mengembalikan elemen ini menggunakan kata kunci hasil.

Akhir sekali, kita perlu menyimpan data yang diekstrak. Talian Paip baharu boleh dibuat untuk memproses dan menyimpan data yang diekstrak. Berikut ialah Pipeline mudah yang menyimpan data yang diekstrak dalam fail JSON:

import json

class TutorialPipeline(object):

    def __init__(self):
        self.file = open('douban_top250.json', 'w')

    def process_item(self, item, spider):
        line = json.dumps(dict(item)) + "
"
        self.file.write(line)
        return item

    def spider_closed(self, spider):
        self.file.close()
Salin selepas log masuk

Akhir sekali, kita perlu mengkonfigurasi Pipeline dalam settings.py. Hanya tambahkan kod berikut dalam ITEM_PIPELINES:

ITEM_PIPELINES = {
    'tutorial.pipelines.TutorialPipeline': 100,
}
Salin selepas log masuk

Kini kami telah menulis Scrapy Spider yang mudah dan boleh memulakannya dengan melaksanakan arahan berikut:

scrapy crawl douban
Salin selepas log masuk

Laksanakan Selepas arahan, Scrapy akan mula meminta halaman dan menghuraikan data. Data yang diekstrak akan disimpan dalam fail JSON.

3. Kesimpulan

Scrapy ialah rangka kerja perangkak web yang sangat fleksibel dan berkuasa. Dengan Scrapy, kami boleh membina perangkak web yang cekap dan berskala serta mengekstrak data yang diperlukan dengan mudah. Artikel ini memperkenalkan asas Scrapy dan menyediakan contoh mudah, dengan harapan dapat membantu orang baru yang mempelajari perangkak web.

Atas ialah kandungan terperinci Mesti dibaca untuk perangkak baharu: Panduan Bermula Scrapy. 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