本文實例講述了Python利用Scrapy框架爬取豆瓣電影。分享給大家供大家參考,具體如下:
Scrapy是一個為了爬取網站數據,提取結構性數據而編寫的應用框架。 可以應用在包括數據挖掘,信息處理或存儲歷史數據等一系列的程序中。
通過Python包管理工具可以很便捷地對scrapy進行安裝,如果在安裝中報錯提示缺少依賴的包,那就通過pip安裝所缺的包
pip install scrapy
scrapy的組成結構如下圖所示
引擎Scrapy Engine,用于中轉調度其他部分的信號和數據傳遞
調度器Scheduler,一個存儲Request的隊列,引擎將請求的連接發送給Scheduler,它將請求進行排隊,但引擎需要時再將隊列中的第一個請求發送給引擎
下載器Downloader,引擎將請求Request鏈接發送給Downloader之后它就從互聯網上下載相應的數據,并將返回的數據Responses交給引擎
爬蟲Spiders,引擎將下載的Responses數據交給Spiders進行解析,提取我們需要的網頁信息。如果在解析中發現有新的所需要的url連接,Spiders會將鏈接交給引擎存入調度器
管道Item Pipline,爬蟲會將頁面中的數據通過引擎交給管道做進一步處理,進行過濾、存儲等操作
下載中間件Downloader Middlewares,自定義擴展組件,用于在請求頁面時封裝代理、http請求頭等操作
爬蟲中間件Spider Middlewares,用于對進入Spiders的Responses和出去的Requests等數據作一些修改
scrapy的工作流程:首先我們將入口url交給spider爬蟲,爬蟲通過引擎將url放入調度器,經調度器排隊之后返回第一個請求Request,引擎再將請求轉交給下載器進行下載,下載好的數據交給爬蟲進行爬取,爬取的數據一部分是我們需要的數據交給管道進行數據清洗和存儲,還有一部分是新的url連接會再次交給調度器,之后再循環進行數據爬取
首先在存放項目的文件夾內打開命令行,在命令行下輸入scrapy startproject 項目名稱,就會在當前文件夾自動創建項目所需的python文件,例如創建一個爬取豆瓣電影的項目douban,其目錄結構如下:
Db_Project/ scrapy.cfg --項目的配置文件 douban/ --該項目的python模塊目錄,在其中編寫python代碼 __init__.py --python包的初始化文件 items.py --用于定義item數據結構 pipelines.py --項目中的pipelines文件 settings.py --定義項目的全局設置,例如下載延遲、并發量 spiders/ --存放爬蟲代碼的包目錄 __init__.py ...
之后進入spiders目錄下輸入scrapy genspider 爬蟲名 域名,就會生成爬蟲文件douban.py文件,用于之后定義爬蟲的爬取邏輯和正則表達式等內容
scrapy genspider douban movie.douban.com
要爬取的豆瓣電影網址為 https://movie.douban.com/top250,其中的每個電影如下
我們要爬取其中的序號、名稱、介紹、星級、評論數、描述這幾個關鍵信息,因此需要在管道文件items.py中先定義這幾個對象,類似于ORM,通過scrapy.Field()方法為每個字段定義一個數據類型
新聞熱點
疑難解答