Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Scrapy Spider menyokong pelbagai kaedah penghuraian halaman web

Bagaimana Scrapy Spider menyokong pelbagai kaedah penghuraian halaman web

WBOY
WBOYasal
2023-06-22 11:17:59984semak imbas

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:

  1. Buat permintaan dan muat turun halaman web
  2. Uraikan halaman web yang dimuat turun dan ekstrak maklumat yang diperlukan
  3. Akankah yang diekstrak data disimpan dalam medium storan data

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:

  • Pemilih CSS: penghurai berdasarkan sintaks pemilih CSS
  • XPathSelector: penghurai standard berdasarkan ungkapan XPath.
  • HtmlXPathSelector: Diwarisi daripada XPathSelector, biasanya digunakan untuk penghuraian dokumen HTML.
  • XmlXPathSelector: Diwarisi daripada XPathSelector, digunakan untuk penghuraian dokumen XML.

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!

Kenyataan:
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