Python爬蟲Scrapy入門

Scrapy組成

Scrapy是Python開發的一個快速、高層次的屏幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化的數據。
在這裏插入圖片描述

  • 引擎(Scrapy):用來處理整個系統的數據流,觸發事務(框架核心)。
  • 調度器(Scheduler):用來接受引擎發過來的請求, 壓入隊列中, 並在引擎再次請求的時候返回. 可以想像成一個URL(抓取網頁的網址或者說是鏈接)的優先隊列, 它來決定下一個要抓取的網址是什麼, 同時去除重複的網址
  • 下載器(Downloader):用於下載網頁內容,並將網頁內容返回給蜘蛛(Scrapy下載器是建立在twisted這個高效的異步模型上的)
  • 爬蟲(Spiders):爬蟲是主要幹活的, 用於從特定的網頁中提取自己需要的信息, 即所謂的實體(Item)。用戶也可以從中提取出鏈接,讓Scrapy繼續抓取下一個頁面
  • 項目管道(Pipeline):負責處理爬蟲從網頁中抽取的實體,主要的功能是持久化實體、驗證實體的有效性、清除不需要的信息。當頁面被爬蟲解析後,將被髮送到項目管道,並經過幾個特定的次序處理數據。
  • 下載器中間件(Downloader Middlewares):位於Scrapy引擎和下載器之間的框架,主要是處理Scrapy引擎與下載器之間的請求及響應。
  • 爬蟲中間件(Spider Middlewares):介於Scrapy引擎和爬蟲之間的框架,主要工作是處理蜘蛛的響應輸入和請求輸出。
  • 調度中間件(Scheduler Middewares):介於Scrapy引擎和調度之間的中間件,從Scrapy引擎發送到調度的請求和響應。

Scrapy運行流程

  • 引擎從調度器中取出一個鏈接(URL)用於接下來的抓取
  • 引擎把URL封裝成一個請求(Request)傳給下載器
  • 下載器把資源下載下來,並封裝成應答包(Response)
  • 爬蟲解析Response
  • 解析出實體(Item),則交給實體管道進行進一步的處理
  • 解析出的是鏈接(URL),則把URL交給調度器等待抓取

Scrapy創建

安裝好scrapy類庫之後,就可以創建scrapy項目了,pycharm不能直接創建scrapy項目,必須通過命令行創建,打開pycharm的Terminal終端,輸入scrapy startproject scrapy_demo命令。需要注意的是,環境變量必須要配好才能在cmd中顯示scrapy命令.

對於Mac,由於Mac的python有多個版本,如果使用3.6的版本,不能直接在命令行運行scrapy,需要創建軟鏈接(注意對應的版本)。

ln -s /Library/Frameworks/Python.framework/Versions/3.6/bin/scrapy /usr/local/bin/scrapy

看到下面的信息則說明創建成功了。
在這裏插入圖片描述

此時可以看到項目自動創建了以下幾個文件
在這裏插入圖片描述

  • scrapy.cfg: 項目的配置文件
  • scrapy_demo/ :該項目的python模塊,之後將在這裏加入代碼
  • items.py:項目中的items文件,用來定義我們要抓取的數據
  • middlewares.py:項目中的middlewares文件
  • pipelines.py:項目中的pipelines文件,用來對spider返回的item列表進行數據的保存等操作,可以寫入文件或保存到數據庫
  • setting.py:爬蟲配置文件
  • spiders/:放置spider代碼的目錄(自己編寫)

scrapy網站爬取

接下來,將對IEEE和arXiv網站進行爬蟲,其中middlewares.py,init.py文件保持默認。

具體操作請訪問https://www.omegaxyz.com/2020/02/03/python-scrapy/

在這裏插入圖片描述


更多內容訪問 omegaxyz.com
網站所有代碼採用Apache 2.0授權
網站文章採用知識共享許可協議BY-NC-SA4.0授權
© 2020 • OmegaXYZ-版權所有 轉載請註明出處

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章