Scrapy是一個基于Python的高級網絡爬蟲框架,可以快速高效地提取互聯網上的數據。其中,css選擇器是Scrapy框架中用來匹配HTML元素的一種選擇器。在Scrapy框架中使用css選擇器,可以幫助我們更快捷地定位和提取所需要的數據。
import scrapy
class MySpider(scrapy.Spider):
name = "example"
start_urls = [
'http://example.com',
]
def parse(self, response):
# 使用css選擇器提取title元素中的文本
title = response.css('title::text').get()
print(title)
在上述代碼中,我們首先導入了Scrapy庫,并定義了一個名為MySpider的類,該類繼承自Scrapy爬蟲基類,其中包括了我們爬取的網站鏈接。接下來,在parse方法中,我們使用css選擇器提取了response中的title元素中的文本,并輸出到控制臺中。
在Scrapy框架中,css選擇器的語法和在css中一樣,使用的是基于類、id、標簽等特定屬性的選擇器查詢。以下是一些常見的css選擇器:
- 標簽選擇器(tag selector):選擇指定標簽名的所有元素。
- 類選擇器(class selector):選擇具有指定class屬性的所有元素。
- id選擇器(id selector):選擇具有指定id屬性的元素。
- 屬性選擇器(attribute selector):選擇指定屬性名/屬性值的元素。
- 后代選擇器(descendant selector):選擇指定父級下的所有子元素。
- 之后兄弟選擇器(adjacent sibling selector):選擇指定元素之后的第一個兄弟元素。
以下是一個使用css選擇器提取網頁標題和正文中圖片鏈接的例子:
import scrapy
class MySpider(scrapy.Spider):
name = "example"
start_urls = [
'http://example.com',
]
def parse(self, response):
# 提取網頁標題
title = response.css('title::text').get()
# 提取正文中的圖片鏈接
image_urls = response.css('article img::attr(src)').getall()
print(title, image_urls)
對于上述代碼中使用的css選擇器,article和img分別代表HTML中的article和img標簽。其中,article標簽是HTML5中新增的標簽,表示網頁中的整體內容;img標簽則是HTML中用來插入圖片的標簽。get()方法用來提取元素中的文本,getall()方法用來提取元素中的屬性值。
通過使用Scrapy框架提供的css選擇器,我們可以更方便地定位和提取網頁中的數據,提高數據爬取的效率。