Scrapy框架(一)
框架簡介
Scrapy是純Python開發(fā)的一個高效,結構化的網(wǎng)頁抓取框架;
Scrapy是用純Python實現(xiàn)一個為了爬取網(wǎng)站數(shù)據(jù)、提取結構性數(shù)據(jù)而編寫的應用框架,用途非常廣泛职车。多用于抓取大量靜態(tài)頁面。
框架的力量鹊杖,用戶只需要定制開發(fā)幾個模塊就可以輕松的實現(xiàn)一個爬蟲悴灵,用來抓取網(wǎng)頁內容以及各種圖片,非常之方便骂蓖。
Scrapy 使用了 Twisted['tw?st?d] (其主要對手是Tornado)異步網(wǎng)絡框架來處理網(wǎng)絡通訊积瞒,可以加快我們的下載速度,不用自己去實現(xiàn)異步框架登下,并且包含了各種中間件接口茫孔,可以靈活的完成各種需求。
模塊安裝
scrapy支持Python2.7和python3.4以上版本被芳。
python包可以用全局安裝(也稱為系統(tǒng)范圍)缰贝,也可以安裝咋用戶空間中。不建議安裝在系統(tǒng)范圍畔濒。相反剩晴,建議在"虛擬環(huán)境"(virtualenv)中安裝scrapy。Virtualenv允許不與已安裝的Python系統(tǒng)包沖突侵状,并且仍然通常使用pip安裝赞弥。
Ubuntu 14.04或以上 安裝
scrapy目前正在使用最新版的lxml,twisted和pyOpenSSL進行測試壹将,并且與最近的Ubuntu發(fā)行版兼容嗤攻。但它也支持舊版本的Ubuntu,比如Ubuntu14.04诽俯,盡管可能存在TLS連接問題妇菱。
Ubuntu安裝注意事項
不要使用 python-scrapyUbuntu提供的軟件包,它們通常太舊而且速度慢暴区,無法趕上最新的Scrapy闯团。
要在Ubuntu(或基于Ubuntu)系統(tǒng)上安裝scrapy,您需要安裝這些依賴項:
sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
如果你想在python3上安裝scrapy仙粱,你還需要Python3的開發(fā)頭文件:
sudo apt-get install python3-dev
在virtualenv中房交,你可以使用pip安裝Scrapy:
pip install scrapy
簡單使用
第零步:分析網(wǎng)站
首先得想
1. 你的目標是什么??2. 你的目標是動態(tài)數(shù)據(jù)or靜態(tài)數(shù)據(jù)??3. 怎么獲取第一批數(shù)據(jù)?
4. 怎么獲取多批數(shù)據(jù)?
5. 怎么做持久化?
第一步: 新建項目
創(chuàng)建項目: scrapy startproject project_name
進入項目目錄后創(chuàng)建爬蟲:
scrapy genspider spider_name website_domain
執(zhí)行爬蟲:
scrapy crawl spider_name 或者 scrapy runspider spider_file
--------------------------------------------------------------------
scrapy.cfg: 項目部署的配置文件
tz_spider: 項目目錄, 包含了項目運行相關的文件
itsms.py: 項目的目標文件
middlewares.py: 項目的中間件文件
pipelines.py: 項目的管道文件
settings.py: 項目的設置文件
spiders: 項目的爬蟲目錄
第二步: 設置項目目標
進入items.py文件中設置爬取的目標
第三步: 設置管道文件
編輯pipelines.py文件, 讓目標數(shù)據(jù)流向到指定點. 如: 數(shù)據(jù)保存到文件中
注意: 管道文件設置好后, 需要在settings.py文件注冊記得注冊
# Configure item pipelines
# See https://doc.scrapy.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {
'papaixin.pipelines.PapaixinPipeline': 300,
}
第四步: 修改設置文件
設置UA信息
# User_Agent信息設置
# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/75.0.3770.80 Safari/537.36'
設置不遵循robots檢測
# Obey robots.txt rules
# ROBOTSTXT_OBEY = True
設置爬取時間間隔
# See also autothrottle settings and docs
DOWNLOAD_DELAY = 0.5
設置管道文件注冊
# Configure item pipelines
# See https://doc.scrapy.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {
'papaixin.pipelines.PapaixinPipeline': 300,
}
第五步: 編寫spider
第六步: 報錯了怎么辦
先排語法錯誤
再排拼寫錯誤
繼排邏輯錯誤
后排數(shù)據(jù)錯誤
運行流程
Scrapy構架解析:
Scrapy Engine(引擎): 負責Spider、ItemPipeline伐割、Downloader候味、Scheduler中間的通訊刃唤,信號、數(shù)據(jù)傳遞等白群。
Scheduler(調度器): 它負責接受引擎發(fā)送過來的Request請求尚胞,并按照一定的方式進行整理排列,入隊帜慢,當引擎需要時笼裳,交還給引擎。
Downloader(下載器):負責下載Scrapy Engine(引擎)發(fā)送的所有Requests請求粱玲,并將其獲取到的Responses交還給Scrapy Engine(引擎)躬柬,由引擎交給Spider來處理,
Spider(爬蟲):它負責處理所有Responses,從中分析提取數(shù)據(jù)抽减,獲取Item字段需要的數(shù)據(jù)允青,并將需要跟進的URL提交給引擎,再次進入Scheduler(調度器)胯甩,
Item Pipeline(管道):它負責處理Spider中獲取到的Item昧廷,并進行進行后期處理(詳細分析、過濾偎箫、存儲等)的地方.
Downloader Middlewares:(下載中間件):你可以當作是一個可以自定義擴展下載功能的組件木柬。
Spider Middlewares(Spider中間件):你可以理解為是一個可以自定擴展和操作引擎和Spider中間通信的功能組件(比如進入Spider的Responses;和從Spider出去的Requests)
作業(yè)
1.實踐豆瓣電影案例, 保存數(shù)據(jù)到json文件中.