1. 程式人生 > 實用技巧 >爬蟲5-Scrapy爬蟲架構

爬蟲5-Scrapy爬蟲架構

簡介

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資料