scrapy是乙個為了爬取**資料,提取結構性資料而編寫的應用框架。 可以應用在包括資料探勘,資訊處理或儲存歷史資料等一系列的程式中。其最初是為了 頁面抓取 (更確切來說, 網路抓取 )所設計的, 也可以應用在獲取api所返回的資料(例如 amazon associates web services ) 或者通用的網路爬蟲。
引擎負責控制資料流在系統中所有元件中流動,並在相應動作發生時觸發事件。 詳細內容檢視下面的資料流(data flow)部分。
此元件相當於爬蟲的「大腦」,是整個爬蟲的排程中心。
排程器從引擎接受request並將他們入隊,以便之後引擎請求他們時提供給引擎。初始的爬取url和後續在頁面中獲取的待爬取的url將放入排程器中,等待爬取。同時排程器會自動去除重複的url(如果特定的url不需要去重也可以通過設定實現,如post請求的url)
spider是scrapy使用者編寫用於分析response並提取item(即獲取到的item)或額外跟進的url的類。 每個spider負責處理乙個特定(或一些)**。
item pipeline負責處理被spider提取出來的item。典型的處理有清理、 驗證及持久化(例如訪問到資料庫中)。當頁面被爬蟲解析所需的資料存入item後,將被傳送到專案管道(pipeline),並經過幾個特定的次序處理資料,最後存入本地檔案或存入資料庫。
spider中介軟體是在引擎及spider之間的特定鉤子(specific hook),處理spider的輸入(response)和輸出(items及requests)。 其提供了乙個簡便的機制,通過插入自定義**來擴充套件scrapy功能。
引擎開啟乙個**(open a domain),找到處理該**的spider並向該spider請求第乙個要爬取的url(s)。在開始爬取之前,首先要建立乙個新的scrapy專案。這裡以爬取我的部落格為例,進入你打算儲存**的目錄中,執行下列命令:引擎從spider中獲取到第乙個要爬取的url並在排程器(scheduler)以request排程。
引擎向排程器請求下乙個要爬取的url。
spider處理response並返回爬取到的item及(跟進的)新的request給引擎。
引擎將(spider返回的)爬取到的item給item pipeline,將(spider返回的)request給排程器。
scrapy startproject scrapyspider
該命令將會建立包含下列內容的scrapyspider目錄:
scrapyspider/
scrapy.cfg
scrapyspider/
__init__.py
items.py
pipelines.py
settings.py
spiders/
__init__.py
...
這些檔案分別是:
spider是使用者編寫用於從單個**(或者一些**)爬取資料的類。以下為我們的第乙個spider**,儲存在scrapyspider/spiders目錄下的blog_spider.py檔案中:為了建立乙個spider,您必須繼承 scrapy.spider 類, 且定義以下三個屬性:
from
scrapy.spiders
import
spider
class
blogspider
(spider
):name
='woodenrobot'
start_urls=[
'']def
parse
(self
,response
):titles
=response
.xpath
('//a[@class="post-title-link"]/text()').
extract
()for
title
intitles
:print
title
.strip
()
開啟終端進入專案所在路徑(即:scrapyspider路徑下)執行下列命令:
scrapy crawl woodenrobot
啟動爬蟲後就可以看到列印出來當前頁所有文章標題了
Scrapy爬蟲框架介紹
爬蟲框架是實現爬蟲功能的乙個軟體結構和功能元件集合。爬蟲框架是乙個半成品,能夠幫助使用者實現專業網路爬蟲。五個模組 spiders 爬蟲 解析 產生的相應 response 產生爬取項item,產生額外的爬取請求 requests scheduler 排程器 負責對爬取請求進行排程管理 可能同時有多...
python爬蟲框架scrapy介紹
scrapy,python開發的乙個快速,高層次的螢幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化的資料。scrapy用途廣泛,可以用於資料探勘 監測和 自動化測試。scrapy吸引人的地方在於它是乙個框架,任何人都可以根據需求方便的修改。它也提供了多種型別爬蟲的基類,如basesp...
爬蟲之Scrapy框架介紹
scrapy是用純python實現乙個為了爬取 資料 提取結構性資料而編寫的應用框架,用途非常廣泛。框架的力量,使用者只需要定製開發幾個模組就可以輕鬆的實現乙個爬蟲,用來抓取網頁內容以及各種,非常之方便。scrapy engine 引擎 用來處理整個系統的資料流處理,觸發事務 框架核心 schedu...