Rumah > Artikel > pembangunan bahagian belakang > Mesti dibaca untuk perangkak baharu: Panduan Bermula Scrapy
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
Sebelum anda bermula, anda perlu memasang Scrapy terlebih dahulu. Pemasangan Scrapy adalah sangat mudah, cuma laksanakan arahan berikut dalam baris arahan:
pip install scrapy
Apabila mencipta projek Scrapy, anda boleh menggunakan arahan berikut:
scrapy startproject <project_name>
Ini akan mencipta folder bernama 4fc59f85b86f3cdcf539b23b3b2209e3 dalam direktori semasa dan mencipta fail dan folder yang diperlukan di dalamnya.
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>
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.
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.
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.
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
Pergi ke folder tutorial dan buat labah-labah bernama douban_spider:
scrapy genspider douban_spider movie.douban.com
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}
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()
Akhir sekali, kita perlu mengkonfigurasi Pipeline dalam settings.py. Hanya tambahkan kod berikut dalam ITEM_PIPELINES:
ITEM_PIPELINES = { 'tutorial.pipelines.TutorialPipeline': 100, }
Kini kami telah menulis Scrapy Spider yang mudah dan boleh memulakannya dengan melaksanakan arahan berikut:
scrapy crawl douban
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!