- Scrapy Engine 引擎
處理整個系統,是各個模塊之間的聯繫人,各個模塊的數據均需要引擎來發送和收回 - Scheduler 調度器
a.接收請求,壓入隊列
b.引擎再次請求時返回請求 - Downloader 下載器
接收請求request,返回響應response - Spider 爬蟲
a.發起起始的請求 start_url
b.定義如何爬取下一個網站 call_back - Item Pipeline 管道
定義數據的後續處理 - Middleware 中間件
a. Downloader Middleware 下載器中間件
處理引擎和下載器之間的請求request和響應response (反反爬)
b. Spider Middleware 爬蟲中間件
處理spider的響應輸出和請求輸入
scrapy開發流程:
1 創建項目
scrapy startproject 項目名稱
2 明確要爬取的網站數據,在items.py中建模
3 setting中對項目進行配置,scrapy.cfg遠程部署配置
4 創建爬蟲,spiders文件夾存放爬蟲文件
# 命令行創建
scrapy genspider 爬蟲名 爬蟲允許的域名
# 手動創建
在spiders文件夾下創建py文件
import scrapy
導入模型(items中該爬蟲的數據模型)
爬蟲類(類名一般爲"爬蟲名Spider")必要類屬性:
name 爬蟲名
allowed_domains 允許爬取的域名
start_urls 起始爬取的url列表
必要方法
def parse(self,response):
寫入數據獲取和處理方法,以及後續url的操作
5 保存數據 pipeline.py進行爬取數據的存儲設置
該類一般有三個方法
def __init___(self): 或者是 open_spider(self)
# 定義初始狀態,一般爲打開一個文件,或者是鏈接數據庫的必要參數等
f = open("file","w")
def process_item(self,item,spider):
定義數據存儲過程
item爲在爬蟲.py文件中yield返回給引擎的爬取數據
def close_spider(spider):
定義數據存儲完畢的狀態,一般爲關閉文件或者是斷開數據庫服務器鏈接
6 運行爬蟲
scrapy crawl 爬蟲名
7 feed輸出
將獲取到的數據返回給引擎,並Feed輸出,給其他平臺進行數據分析
scrapy crawl 爬蟲名 -o 文件名.json
scrapy crawl 爬蟲名 -o 文件名.xml 等等
如果不記得什麼格式,只需要隨便寫點後綴,會提示都有什麼格式
scrapy crawl 爬蟲名 -o 文件名.xmladfsa