初识scrapy
文章目錄
- 1、scrapy安裝與環境依賴
- 2、創建項目
- 3、項目目錄介紹
- 4、scrapy框架介紹: 5大核心組件與數據流向
- 5.使用scrapy框架爬取糗百
- 6、scrapy爬取校花網人名與圖片下載鏈接
1、scrapy安裝與環境依賴
# 1.在安裝scrapy前需要安裝好相應的依賴庫, 再安裝scrapy, 具體安裝步驟如下:(1).安裝lxml庫: pip install lxml(2).安裝wheel: pip install wheel(3).安裝twisted: pip install twisted文件路徑(twisted需下載后本地安裝,下載地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted)(版本選擇如下圖,版本后面有解釋,請根據自己實際選擇)(4).安裝pywin32: pip install pywin32(注意:以上安裝步驟一定要確保每一步安裝都成功,沒有報錯信息,如有報錯自行百度解決)(5).安裝scrapy: pip install scrapy(注意:以上安裝步驟一定要確保每一步安裝都成功,沒有報錯信息,如有報錯自行百度解決)(6).成功驗證:在cmd命令行輸入scrapy,顯示Scrapy1.6.0-no active project,證明安裝成功2、創建項目
1.手動創建一個目錄test
2.在test文件夾下創建爬蟲項目為spiderpro: scrapy startproject spiderpro
3.進入項目文件夾: cd spiderpro
4.創建爬蟲文件: scrapy genspider 爬蟲名 域名
3、項目目錄介紹
spiderpro
spiderpro # 項目目錄
init
spiders:爬蟲文件目錄
init
tests.py:爬蟲文件
items.py:定義爬取數據持久化的數據結構
middlewares.py:定義中間件
pipelines.py:管道,持久化存儲相關
settings.py:配置文件
venv:虛擬環境目錄
scrapy.cfg: scrapy項目配置文件
說明:
- spiders:其內包含一個個Spider的實現, 每個Spider是一個單獨的文件
- items.py:它定義了Item數據結構, 爬取到的數據存儲為哪些字段
- pipelines.py:它定義Item Pipeline的實現
- settings.py:項目的全局配置
- middlewares.py:定義中間件, 包括爬蟲中間件和下載中間件
- scrapy.cfg:它是scrapy項目的配置文件, 其內定義了項目的配置路徑, 部署相關的信息等
4、scrapy框架介紹: 5大核心組件與數據流向
(1).架構:Scrapy Engine: 這是引擎,負責Spiders、ItemPipeline、Downloader、Scheduler中間的通訊,信號、數據傳遞等等!Scheduler(調度器): 它負責接受引擎發送過來的requests請求,并按照一定的方式進行整理排列,入隊、并等待Scrapy Engine(引擎)來請求時,交給引擎。Downloader(下載器):負責下載Scrapy Engine(引擎)發送的所有Requests請求,并將其獲取到的Responses交還給Scrapy Engine(引擎),由引擎交給Spiders來處理,Spiders:它負責處理所有Responses,從中分析提取數據,獲取Item字段需要的數據,并將需要跟進的URL提交給引擎,再次進入Scheduler(調度器),Item Pipeline:它負責處理Spiders中獲取到的Item,并進行處理,比如去重,持久化存儲(存數據庫,寫入文件,總之就是保存數據用的)Downloader Middlewares(下載中間件):你可以當作是一個可以自定義擴展下載功能的組件Spider Middlewares(Spider中間件):你可以理解為是一個可以自定擴展和操作引擎和Spiders中間‘通信‘的功能組件(比如進入Spiders的Responses;和從Spiders出去的Requests) (2).工作流:1.spider將請求發送給引擎, 引擎將request發送給調度器進行請求調度2.調度器把接下來要請求的request發送給引擎, 引擎傳遞給下載器, 中間會途徑下載中間件3.下載攜帶request訪問服務器, 并將爬取內容response返回給引擎, 引擎將response返回給spider4.spider將response傳遞給自己的parse進行數據解析處理及構建item一系列的工作, 最后將item返回給引擎, 引擎傳遞個pipeline5.pipe獲取到item后進行數據持久化6.以上過程不斷循環直至爬蟲程序終止5.使用scrapy框架爬取糗百
需求: 爬取糗事百科熱門板塊,每一條的標題,好笑,評論條數及作者信息,解析爬取的信息數據,定制item數據存儲結構,最終將數據存儲于MongoDB數據庫中.
創建項目:
scrapy startproject qsbk # 創建項目
cd qsbk # 切換到項目目錄
scrapy genspider qsbk_hot www.qiushibaike.com # 創建爬蟲文件, qsbk_hot為爬蟲名, www…com為爬取范圍
6、scrapy爬取校花網人名與圖片下載鏈接
需求: 爬取校花網大學?;ǖ哪J的第一頁的所有圖片src和人名, 并通過管道存入mongodb數據庫
創建項目:
scrapy startproject xiaohuaspider # 創建項目
cd xiaohuaspider # 切換到項目目錄
scrapy genspider hua www.baidu.com # 創建爬蟲文件, hua為爬蟲名, www.baidu.com為爬取范圍
創建item類, 用于存儲解析出的數據
import scrapy
class XiaohuaspiderItem(scrapy.Item):
name = scrapy.Field()
src = scrapy.Field()
總結
- 上一篇: MongoDB数据库的下载与Python
- 下一篇: scrapy详解及主要应用场景