Amalan rangka kerja Scrapy: merangkak data tapak web Jianshu
Scrapy ialah rangka kerja perangkak Python sumber terbuka yang boleh digunakan untuk mengekstrak data daripada World Wide Web. Dalam artikel ini, kami akan memperkenalkan rangka kerja Scrapy dan menggunakannya untuk merangkak data daripada tapak web Jianshu.
Scrapy boleh dipasang menggunakan pengurus pakej seperti pip atau conda. Di sini, kami menggunakan pip untuk memasang Scrapy. Masukkan arahan berikut dalam baris arahan:
pip install scrapy
Setelah pemasangan selesai, anda boleh menggunakan arahan berikut untuk menyemak sama ada Scrapy telah berjaya dipasang:
scrapy version
Jika anda melihat sesuatu seperti " Scrapy x.x.x - tiada keluaran projek aktif", Scrapy telah berjaya dipasang.
Sebelum kita mula menggunakan Scrapy, kita perlu mencipta projek Scrapy. Masukkan arahan berikut pada baris arahan:
scrapy startproject jianshu
Ini akan mencipta projek Scrapy bernama "jianshu" dalam direktori semasa.
Dalam Scrapy, perangkak ialah komponen yang memproses data yang diekstrak daripada tapak web. Kami menggunakan Scrapy Shell untuk menganalisis tapak web Jianshu dan mencipta perangkak.
Masukkan arahan berikut pada baris arahan:
scrapy shell "https://www.jianshu.com"
Ini akan melancarkan Scrapy Shell di mana kami boleh melihat kod sumber halaman dan elemen tapak web Jianshu untuk membuat pemilih untuk perangkak kami .
Sebagai contoh, kita boleh menggunakan pemilih berikut untuk mengekstrak tajuk artikel:
response.css('h1.title::text').extract_first()
Kita boleh menggunakan pemilih berikut untuk mengekstrak pengarang artikel:
response.css('a.name::text').extract_first()
Diuji dalam Scrapy Shell Selepas memilih pemilih, kami boleh mencipta fail Python baharu untuk perangkak kami. Masukkan arahan berikut pada baris arahan:
scrapy genspider jianshu_spider jianshu.com
Ini akan mencipta perangkak Scrapy bernama "jianshu_spider". Kami boleh menambah pemilih yang kami uji dalam Scrapy Shell pada fail .py perangkak dan menentukan data untuk diekstrak.
Sebagai contoh, kod berikut mengekstrak tajuk dan pengarang semua artikel di halaman utama tapak web Jianshu:
import scrapy class JianshuSpider(scrapy.Spider): name = 'jianshu_spider' allowed_domains = ['jianshu.com'] start_urls = ['https://www.jianshu.com/'] def parse(self, response): for article in response.css('li[data-note-id]'): yield { 'title': article.css('a.title::text').extract_first(), 'author': article.css('a.name::text').extract_first(), }
Sekarang, kami melaksanakan perangkak Scrapy dalam mod baris arahan dan mengeluarkan hasilnya kepada fail JSON. Masukkan arahan berikut pada baris arahan:
scrapy crawl jianshu_spider -o articles.json
Perintah ini akan menjalankan perangkak kami dan menyimpan data output ke fail JSON yang dipanggil "articles.json".
Dalam artikel ini, kami memperkenalkan rangka kerja Scrapy dan menggunakannya untuk mengikis data daripada tapak web Jianshu. Mengekstrak data daripada tapak web adalah mudah menggunakan rangka kerja Scrapy, dan Scrapy adalah serentak dan berskala supaya ia boleh menskalakan ke dalam aplikasi pengekstrakan data berskala besar.
Atas ialah kandungan terperinci Amalan rangka kerja buruk: merangkak data tapak web Jianshu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!