爬蟲5-Scrapy爬蟲架構
阿新 • • 發佈:2020-12-23
簡介
Scrapy是爬取網站,提取結構性資料並存儲的應用框架。對爬取過程中的請求、返回、解析、儲存、排程等流程提供模組化支援。
items模組——定義需要爬取的資料欄位
儲存爬取到的資料的容器,python的字典型別。根據網站資料對item進行定義欄位。
# items示例 import scrapy class DangDangItem(scrapy.Item): _id = scrapy.Field() title = scrapy.Field() chubanshe = scrapy.Field()
pipelines模組——連線資料庫、儲存
# pipelines示例:通過__init__初始化連線mongodb,需要連線的庫名、表名、主機地址、埠號在setting.py模組定義完畢;在process_item方法通過isinstance函式判斷item資料型別,若傳入與item一致則存入資料庫表import pymongo from scrapy.conf import settings from .items import DangdangItem class DangdangPipeline(object): def __init__(self): host = settings['MONGODB_HOST'] port = settings['MONGODB_PORT'] db_name = settings['MONGODB_DBNAME'] client = pymongo.MongoClient(host=host,port=port) tdb= client[db_name] self.post = tdb[settings['MONGODB_DOCNAME']] def process_item(self, item, spider): if isinstance(item,DangdangItem): try: book_info = dict(item) if self.post.insert(book_info): except Exception:pass return item
settings模組——定製Scrapy元件的方法
可以控制核心core、外掛extension、pipeline及spyder元件,實現對排程、請求等待時間、儲存優先順序、請求佇列清理方式、資料庫連線方式的定義
# settings引數舉例 SPIDER_MODULES=['****'] #scrapy搜尋spider模組列表 DOWNLOAD_DELAY #爬取延時等待時間 SCHEDULER #Scrapy的排程器配置 DUPEFILTER_CLASS #對爬取連結去重,第二個連結不再爬取 SCHEDULER_PERSIST #TRUE不清佇列;FALSE清佇列 SCHEDULER_QUEUE_CLASS #爬蟲的優先順序演算法:佇列、棧、優先順序 MONGODB_DBNAME #定義連線到的資料庫 MONGODB_DOCNAME #定義儲存到的表名
spider模組
# spider模組中有用於爬取的檔案,命名為****.py. # 建立爬蟲檔案,需要繼承crapy.spider,需要定義三個屬性 name #名字要唯一,不可以為不同的spider設定相同的名字 start_urls #含spider啟動時爬取的url列表 parse() #spider的一個方法,用於接收請求連結返回的response資料