python爬蟲之scrapy框架(對比之下,一切通俗易懂)

python爬蟲之scrapy框架(對比之下,一切通俗易懂)

首先回顧一下常見的爬蟲的路線方法
  • 首先,調用requests庫,根據url網址,獲取對應的網頁的html信息
  • 然後,對爬取回來的html信息進行信息的搜索和採集
  • 最後,將獲取的信息進行相關的操作,輸出或者保存

如下圖

# 獲取html的方法
def getHTMLtext(url):
    return ""

# 將獲取的html信息提取,並將之填寫到對應的表格中
def fillUnivList(text):
    univList = list()
    return univList


# 將已經填寫好的數據進行輸出,num確定你要輸出的列表的項數
def printUnivList(alist,num):
    print(alist)

# main方法,將所有方法進行統攬,進而形成一個完整的程序
def main():
    url = "http://www.zuihaodaxue.com/zuihaodaxuepaiming2020.html"
    text = getHTMLtext(url)
    uniList = fillUnivList(text)
    printUnivList(uniList,40)

# 總的調用
main()
  • 概括一下,無非就散步
    • 從url中下載html頁面
    • 對html頁面進行分析和爬取
    • 將爬取的結果進行相關操作
對應的scrapy框架
  • 基本結構:5+2框架,5個模塊,2箇中間件

在這裏插入圖片描述在這裏插入圖片描述

  • Downloader:根據請求的url,下載對應的html網頁,相應的輸出的是response對象
  • Spider:爬取獲得到html頁面,進行信息篩選,將輸入到的信息以item的形式輸出。但是,一個scrapy是網站級的爬取軟件,很多的網址都在對應的html頁面中,所以還有可能返回對應的url爬取請求requests
  • Item pipelines:對爬取的信息進行相關的操作,保存還是輸出。獲取Sipder的item對象,並對其進行相關的操作
  • Engine:相當於一箇中轉站,用於協調各個部件發送信息的中專。把requests請求,發送給Spiders,讓其爬取。將response對象,發送給item pipeline進行加工。等等
  • Scheduler:主要負責對所有的爬取請求進行調度管理,不要要用戶進行修改
數據流的三個路徑
  • 路徑一:
    • Engine從Spider出獲得爬取請求Requests
    • Engine將爬取請求轉發給Scheduler,用於調度

在這裏插入圖片描述

  • 路徑二:
    • Engine從Scheduler處獲得下一個要爬取的請求
    • Engine將爬取請求Requests發送給Downloader
    • 爬取網頁之後,Downloader進行下載,形成相應的Response對象,通過中間件發給Engine
    • Engine將收到的響應通過中間件發送給Spider處理

在這裏插入圖片描述

  • 路徑三:
    • Spider處理響應後產生爬取項Item和新的爬取請求Requests給Engine
    • Engine將爬取項發送給Item Pipeline進行整理
    • Engine將爬取請求發送給Scheduler進行下一次調度

在這裏插入圖片描述

  • 綜上
    • 用戶只需要將自己的爬取請求輸入到對應的Spider中,同時將自己對文件的加工請求寫入到對應的Item Pipeline中,所以一般使用scrapy框架都只修改Spider和Item Pipeline
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章