Scrapy是一個流行的網(wǎng)絡(luò)爬蟲框架。
Ubuntu下安裝
sudo apt-get install python-devsudo apt-get install libevent-devsudo apt-get install libssl-dev-
pip install scrapy
最好創(chuàng)建一個虛擬環(huán)境安裝。
Scrapy模塊功能


Scrapy Engine(引擎):Scrapy框架的核心部分。負責(zé)在Spider和ItemPipeline、Downloader、Scheduler中間通信、傳遞數(shù)據(jù)等。
Spider(爬蟲):發(fā)送需要爬取的鏈接給引擎,最后引擎把其他模塊請求回來的數(shù)據(jù)再發(fā)送給爬蟲,爬蟲就去解析想要的數(shù)據(jù)。這個部分是我們開發(fā)者自己寫的,因為要爬取哪些鏈接,頁面中的哪些數(shù)據(jù)是我們需要的,都是由程序員自己決定。
Scheduler(調(diào)度器):負責(zé)接收引擎發(fā)送過來的請求,并按照一定的方式進行排列和整理,負責(zé)調(diào)度請求的順序等。
Downloader(下載器):負責(zé)接收引擎?zhèn)鬟^來的下載請求,然后去網(wǎng)絡(luò)上下載對應(yīng)的數(shù)據(jù)再交還給引擎。
Item Pipeline(管道):負責(zé)將Spider(爬蟲)傳遞過來的數(shù)據(jù)進行保存。具體保存在哪里,應(yīng)該看開發(fā)者自己的需求。
Downloader Middlewares(下載中間件):可以擴展下載器和引擎之間通信功能的中間件。
Spider Middlewares(Spider中間件):可以擴展引擎和爬蟲之間通信功能的中間件。
第一個簡單的項目
-
scrapy startproject projectName
創(chuàng)建一個新的項目,projectName項目名
例如,scrapy startproject qsbk爬取糗事百科
此時可以在文件夾中看到這個項目的結(jié)構(gòu)
scrapy.cfg
????projectName/
????????__init__.py
????????items.py
????????middlewares
????????pipelines.py
????????settings.py
????????spiders/
????????????__init__.py
scrapy.cfg:項目的配置文件。
items.py:該文件定義了帶抓取域的模型,有點像Django中的modle。
middlewares:該文件用來存放各種中間件。
pipelines.py:該文件用來將items模型存儲到本地磁盤中。
settings:該文件定義了一些配置信息,如用戶代理、爬取延時等。
spiders/:這個文件(包)下會存儲實際的爬蟲代碼。
2.scrapy genspider spiderName "domainName"
創(chuàng)建爬蟲(需要注意的一點是要先進入到剛剛創(chuàng)建的項目目錄下),spiderName爬蟲名,domainName域名。
例如,scrapy genspider qsbk_spider "qiushibaike.com"爬取糗事百科的段子可以這么寫。注意,spiderName和projectName不能一樣。
創(chuàng)建好了之后會發(fā)現(xiàn)spiders下會有一個名為spiderName的文件。
Scrapy的中文文檔(版本稍低)http://scrapy-chs.readthedocs.io/zh_CN/latest/