scrapy框架組成及各部分作用
item pipelines:
用于存放需要存儲數據的數據模型,一般格式為:
#需要存儲多少中類型的數據就寫多少行,一般是key_value組合
'數據名稱,即·key' = scrapy.Field()
spiders
用于解析返回來的response
import scrapy
from 項目名稱.items import QSBKItem
#QSBKItem 在items.py中的一個類,裝有數據模型
......
item = QSBKItem('字典中對應的key'='items.py中對應的模型名稱')
#返回item,item是一個字典的形式,將item返回給了engine
yield item
engine
爬蟲引擎,作為各個模塊的中轉站
pipelines
用于存儲和過濾由spider爬取回來的數據,比如可以將數據存入數據庫中等等
#這個函數是一定需要的,用于接收返回過來的item數據,并且執行保存和過濾數據的操作
def process_item(self,item,spider):......
#可有可無,在打開爬蟲時運行的函數,一般是在需要爬蟲在打開時執行某些操作時才需要該函數
def open_spider(self,spider):......
#可有可無,在關閉爬蟲時運行的函數,一般是在需要爬蟲在關閉時執行某些操作時才需要該函數
def close_spider(self,spider):......
Download
用于執行spider發出的網頁請求,并且從網頁中進行下載
scheduler
用于調度,如調度多url的請求,重復url的處理等
爬取多頁數據
self.p += 1
if self.p <= 10:next_url = 'https://edu.csdn.net/courses/o280/p'+str(self.p)url = response.urljoin(next_url)#創建絕對url地址#再次調用parse函數來進行解析next_urlyield scrapy.Request(url = url,callback = self.parse)
連接數據庫的配置文件書寫
ITEM_PIPELINES = {#后面的數字越小執行的順序越靠前,是自動生成的educsdn.pipelines.Edu .... = 300,educsdn.mysqlines.Edu .... = 301
}MYSQL_HOST='localhost'MYSQL_DATABASE = '數據庫的名稱'MYSQL_USER = '用戶名'MYSQL_PASS = '密碼'MYSQL_PORT = '端口'#一般為3306