Scrapy ialah rangka kerja perangkak web yang berkuasa yang ditulis dalam Python. Ia boleh membantu kami mengekstrak maklumat halaman web, mengendalikan kandungan dan data secara automatik di tapak web serta boleh mengendalikan tugasan merangkak dan memproses data berskala besar dengan cara yang sangat cekap. Scrapy menyediakan rangka kerja Spider yang berkuasa, API dan pemalam untuk penggunaan dan sambungan yang mudah. Dalam artikel ini, kami akan memperkenalkan cara menyokong berbilang kaedah penghuraian halaman web dalam Scrapy Spider.
Sebelum bermula, kita perlu memahami beberapa konsep asas. Scrapy crawler pada asasnya berfungsi melalui tiga langkah berikut:
Untuk pelaksanaan langkah ini, kami biasanya menulis peraturan penghuraian dalam Spider untuk mengekstrak maklumat yang diperlukan. Scrapy Spider menyokong pelbagai kaedah penghuraian peraturan untuk mengekstrak data, seperti pemilih XPath, pemilih CSS, ungkapan biasa, dsb. Untuk struktur halaman web yang berbeza dan keperluan merangkak, kami perlu menggunakan penghurai dan pemilih yang berbeza untuk mengekstrak maklumat halaman web.
Scrapy menyediakan objek Pemilih yang berbeza untuk menyokong pelbagai jenis kaedah penghuraian. Berikut ialah beberapa objek Pemilih utama:
Kami boleh menggabungkan dan menggunakan pemilih dan penghurai ini secara bebas dalam Spider untuk mengekstrak maklumat.
Berikut ialah contoh yang menunjukkan cara menggunakan berbilang kaedah penghuraian halaman web dalam Scrapy Spider.
Pertama, kita perlu mencipta projek Scrapy baharu dan mencipta Spider baharu. Dalam Spider, kita boleh melengkapkan penghuraian data dengan mentakrifkan fungsi parse(), atau kita boleh melengkapkan penghuraian jenis halaman web tertentu dengan mentakrifkan fungsi lain. Di bawah adalah Labah-labah yang mudah.
import scrapy class MySpider(scrapy.Spider): name = 'myspider' start_urls = ['http://example.com'] def parse(self, response): # Here we can use multiple parsing methods to extract desired data # We can either use CSS selectors or XPath selectors css_selector_data = response.css('div.content p::text').extract_first() xpath_selector_data = response.xpath('//div[contains(@class, "content")]/p/text()').extract_first() # print the extracted data from both methods print(f"CSS Selector parsed data: {css_selector_data}") print(f"XPath Selector parsed data: {xpath_selector_data}")
Dalam Spider ini, kami menggunakan dua kaedah pemilih berbeza dalam fungsi parse() yang ditentukan untuk menghuraikan data dalam respons (objek yang dikembalikan oleh permintaan rangkaian). Dalam contoh pertama, kami menggunakan pemilih CSS untuk mencari elemen dan mengekstrak kandungan teks perenggan pertama dalam contoh kedua, kami menggunakan pemilih XPath untuk melakukan operasi yang sama; Kedua-dua kaedah penghuraian boleh digunakan untuk mengekstrak data daripada halaman web, dan kita boleh menggunakan satu atau kedua-duanya dalam labah-labah yang sama.
Pendekatan lain ialah menggunakan dua atau lebih labah-labah yang berbeza dalam projek Scrapy untuk mengendalikan pelbagai jenis halaman web. Di sini, kita hanya perlu mentakrifkan berbilang Spider dan menentukannya sebagai start_urls masing-masing.
import scrapy class CustomSpider1(scrapy.Spider): name = "test1" start_urls = ['http://example.com'] def parse(self, response): # Use CSS selector to extract the title from the HTML title = response.css('title::text').extract_first() print(f"Title parsed by 'test1' spider: {title}") class CustomSpider2(scrapy.Spider): name = "test2" start_urls = ['http://example.org'] def parse(self, response): # Use XPath selector to extract the title from the XML title = response.xpath('//title/text()').extract_first() print(f"Title parsed by 'test2' spider: {title}")
Berikut ialah dua contoh Scrapy Spiders yang mudah, di mana setiap labah-labah menggunakan kaedah pemilih yang berbeza (iaitu pemilih CSS dan pemilih XPath) untuk mengekstrak tajuk yang sepadan. Di samping itu, setiap Spider di sini mempunyai start_urls sendiri, tetapi anda juga boleh mentakrifkan satu set jenis senarai URL yang berbeza mengikut keperluan untuk dapat mengendalikan pelbagai jenis halaman web.
Ringkasnya, berikut hanyalah pengenalan ringkas kepada Scrapy Spider dan kaedah pemilih Pembaca yang ingin mengetahui lebih lanjut mengenainya boleh mengkaji dokumentasi rangka kerja Scrapy secara terperinci, atau menggunakan beberapa rangkaian luaran lain untuk memperkenalkan Scrapy. sumber. Tidak kira kaedah yang anda pilih, Scrapy ialah alat pengaturcaraan rangkaian yang sangat berkuasa dan fleksibel yang memainkan pelbagai peranan dalam perlombongan data, pengumpulan maklumat, analisis data dan bidang lain.
Atas ialah kandungan terperinci Bagaimana Scrapy Spider menyokong pelbagai kaedah penghuraian halaman web. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!