Scrapy之Spider的用法

2021-10-05 13:12:05 字數 1080 閱讀 5054

spider是定義乙個特定站點(或一組站點)如何被抓取的類,包括如何執行抓取(即跟蹤鏈結)以及如何從頁面中提取結構化資料(即抓取項)。也就是說我們要抓取的**的鏈結配置、抓取邏輯、解析邏輯等其實都是在 spider 中定義的 。

spider 的整個爬取迴圈過程如下:

我們定義的 spider 是繼承自 scrapy.spiders.spider。scrapy.spiders.spider 這個類是最簡單最基本的 spider 類,其他 spider 必須繼承這個類。

scrapy.spiders.spider 這個類提供了 start_requests() 方法的預設實現,讀取並請求 start_urls 屬性 ,並根據返回的結果呼叫 parse() 方法解析結果 。

import scrapy

from myproject.items import myitem

class

myspider

(scrapy.spider)

: name =

'example.com'

allowed_domains =

['example.com'

]def

start_requests

(self)

:yield scrapy.request(

'', self.parse)

yield scrapy.request(

'', self.parse)

yield scrapy.request(

'', self.parse)

defparse

(self, response)

:for h3 in response.xpath(

'//h3'

).getall():

yield myitem(title=h3)

for href in response.xpath(

'//a/@href'

).getall():

yield scrapy.request(response.urljoin(href)

, self.parse)

Scrapy 普通的Spider(二)

這個spider是用於解析xml的,它可以通過指定的節點迭代的解析xml。迭代器可以選擇iternodes,xml或html。由於xml和html都需要一次性讀取整個dom然後才能解析xml,這樣會有效能的問題,所以推薦使用iternodes迭代器。但是當解析有錯誤標記的xml時,使用html迭代器...

讓Scrapy的Spider更通用

scrapy的架構初探 一文所講的spider是整個架構中最定製化的乙個部件,spider負責把網頁內容提取出來,而不同資料採集目標的內容結構不一樣,幾乎需要為每一類網頁都做定製。我們有個設想 是否能做乙個比較通用的spider,把定製部分再進一步隔離出去?gooseeker有乙個爬蟲群模式,從技術...

scrapy 監控spider啟動和關閉

from scrapy.xlib.pydispatch import dispatcher from scrapy import signals from scrapy.exceptions import dropitem class duplicatespipeline object def in...