Scrapy ialah rangka kerja perangkak web berasaskan Python yang boleh merangkak dan menghuraikan data dengan mudah di tapak web. Apabila menggunakan Scrapy, menghuraikan kod HTML adalah bahagian penting. Artikel ini akan memperkenalkan cara Scrapy menghuraikan kod HTML untuk membantu pembaca memperoleh pemahaman yang lebih mendalam tentang penggunaan Scrapy.
1. Prinsip penghuraian kod HTML Scrapy
Dalam Scrapy, terdapat dua cara untuk menghuraikan kod HTML: XPath dan CSS Selector. XPath ialah bahasa laluan XML yang boleh melintasi dan memilih nod dokumen XML. Pemilih CSS ialah pemilih gaya CSS yang memilih elemen pada halaman melalui sintaks yang serupa dengan CSS. Apabila menggunakan Scrapy untuk menghuraikan kod HTML, anda boleh memilih kaedah penghuraian yang berbeza berdasarkan struktur halaman dan jenis data yang perlu ditangkap.
2. XPath menghuraikan kod HTML
XPath ialah kaedah biasa untuk menghuraikan kod HTML dalam Scrapy. Untuk menggunakan XPath, anda boleh menggunakan perpustakaan lxml atau pustaka Selector yang disertakan dengan Scrapy. Di bawah ini kami mengambil Selector dalam Scrapy sebagai contoh untuk memperkenalkan cara menggunakan XPath.
Pertama, kita perlu mendapatkan kod sumber halaman, yang boleh dicapai menggunakan perpustakaan Permintaan Scrapy.
from scrapy import Request def parse(self, response): yield Request(url='http://example.com', callback=self.parse_page) def parse_page(self, response): html = response.body
Seterusnya, kita boleh menggunakan pustaka Selector untuk menghuraikan kod HTML. Mula-mula bina objek Pemilih.
from scrapy.selector import Selector selector = Selector(text=html)
Kemudian, kita boleh menggunakan sintaks XPath untuk memilih elemen yang diperlukan. Sintaks XPath yang biasa digunakan adalah seperti berikut:
selector.xpath('//title') #选取所有的title元素 selector.xpath('//div[@class="example"]') #选取class为example的div元素 selector.xpath('//div[contains(@class, "example")and @id="content"]')#选取class包含example、id为content的div元素
selector.xpath('//a/@href') #选取所有a标签的href属性
selector.xpath('//h1/text()') #选取h1标签的文本内容 selector.xpath('//p[contains(text(), "example")]/text()')#选取p标签中包含example文本内容的文本
Di atas ialah cara menggunakan XPath dalam Scrapy.
3. CSS Selector menghuraikan kod HTML
CSS Selector ialah satu lagi kaedah yang biasa digunakan untuk menghurai kod HTML dalam Scrapy. Tidak seperti XPath, CSS Selector menggunakan sintaks pemilih gaya CSS. Di bawah ini kami menggunakan Selector yang disertakan dengan Scrapy sebagai contoh untuk memperkenalkan penggunaan CSS Selector.
Pertama, kita perlu mendapatkan kod sumber halaman, yang boleh dicapai menggunakan perpustakaan Permintaan Scrapy.
from scrapy import Request def parse(self, response): yield Request(url='http://example.com', callback=self.parse_page) def parse_page(self, response): html = response.body
Seterusnya, kita boleh menggunakan pustaka Selector untuk menghuraikan kod HTML. Atau bina objek Pemilih terlebih dahulu.
from scrapy.selector import Selector selector = Selector(text=html)
Gunakan sintaks Pemilih CSS untuk memilih elemen.
selector.css('title') #选取所有的title元素 selector.css('div.example') #选取class为example的div元素 selector.css('div.example#content')#选取class为example、id为content的div元素 selector.css('a::attr(href)') #选取所有a标签的href属性 selector.css('h1::text') #选取h1标签的文本内容 selector.css('p:contains("example")::text') #选取p标签中包含example文本内容的文本
Di atas ialah cara menggunakan CSS Selector dalam Scrapy.
4. Ringkasan
Melalui pengenalan artikel ini, kita boleh melihat dua kaedah untuk Scrapy menghuraikan kod HTML: XPath dan CSS Selector. Menggunakan dua kaedah ini, kita boleh memilih data yang kita perlukan dengan mudah daripada HTML. Perlu diingat bahawa apabila memilih kaedah penghuraian, kaedah dan sintaks yang sesuai mesti dipilih berdasarkan struktur halaman dan jenis data yang perlu diekstrak.
Atas ialah kandungan terperinci Cara Scrapy menghuraikan kod HTML. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!