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