1、Scrapy
是一個(gè)爬蟲框架,提取結(jié)構(gòu)性的數(shù)據(jù)。其可以應(yīng)用在數(shù)據(jù)挖掘,信息處理等方面。提供了許多的爬蟲的基類,幫我們更簡便使用爬蟲?;赥wisted
2、scrapy安裝
- 首先安裝依賴庫Twisted
?pip install (依賴庫的路徑)
在這個(gè)網(wǎng)址http://www.lfd.uci.edu/~gohlke/pythonlibs#twisted 下面去尋找符合你的python版本和系統(tǒng)版本的Twisted - 然后在安裝scrapy框架
?pip install scrapy
?http://www.lfd.uci.edu/-gohlke/pythonlibs#twisted
【注意】路徑名不能有中文,不能用管理員進(jìn)入cmd,電腦系統(tǒng)用戶路徑不能是中文
3、框架簡介
該框架是一個(gè)第三方的框架,許多功能已經(jīng)被封裝好(比如:下載功能)
由五部分構(gòu)成:
引擎、下載器、爬蟲、調(diào)度器、管道(item和pipeline)
以上五部分我們只需要關(guān)系其中的兩部分:爬蟲和管道
- spiders:蜘蛛或爬蟲,我們分析網(wǎng)頁的地方,我們主要的代碼寫在這里
- 管道:包括item和pipeline,用于處理數(shù)據(jù)
其他部分:了解- 引擎:用來處理整個(gè)系統(tǒng)的數(shù)據(jù)流,觸發(fā)各種事務(wù)(框架的核心)
- 下載器:用于下載網(wǎng)頁內(nèi)容,并且返回給蜘蛛(下載器基于Twisted的高效異步模型)
- 調(diào)度器:用來接收引擎發(fā)過來的請求,壓入隊(duì)列中等處理任務(wù)
4.簡單用法
(1)創(chuàng)建項(xiàng)目
指令:scrapy startproject 項(xiàng)目名
(2)項(xiàng)目目錄結(jié)構(gòu)
firstSpider
firstSpider
spiders 爬蟲目錄(寫代碼位置)
__init__.py
myspider.py 爬蟲文件,以后的爬蟲代碼寫在這里
__init__.py
items.py 定義數(shù)據(jù)結(jié)構(gòu)地方
middlewares.py 中間件(了解)
pipelines.py 管道文件
settings.py 項(xiàng)目配置文件
scrapy.cfg
項(xiàng)目創(chuàng)建處理,里面是沒有爬蟲的,我們需要通過指令來創(chuàng)建一個(gè)爬蟲:
cd firstSpider/firstSpider
scrapy genspider qiubai “www.qiushibaike.com"
以上指令完事后,就會(huì)在firstSpider/firstSpider/spiders里面自動(dòng)創(chuàng)建一個(gè)qiubai.py
name: 爬蟲的名字,啟動(dòng)的時(shí)候根據(jù)爬蟲的名字啟動(dòng)項(xiàng)目
allowed_domains:允許的域名,就是爬取的時(shí)候這個(gè)請求要不要發(fā)送,如果是該允許域名之下的url,就會(huì)發(fā)送,
如果不是,則過濾掉這個(gè)請求,這是一個(gè)列表,可以寫多個(gè)允許的域名
start_urls:爬蟲起始url,是一個(gè)列表,里面可以寫多個(gè),一般只寫一個(gè)
def parse(self, response): 這個(gè)函數(shù)非常重要,就是你以后寫代碼的地方,parse函數(shù)名是固定的,當(dāng)收到下載
數(shù)據(jù)的時(shí)候會(huì)自動(dòng)的調(diào)用這個(gè)方法,該方法第二個(gè)參數(shù)為response,這是一個(gè)響應(yīng)對象,從該對象中獲取html
字符串,然后解析之?!咀ⅰ窟@個(gè)parse函數(shù)必須返回一個(gè)可迭代對象
(3)定制item.py,其實(shí)就是您的數(shù)據(jù)結(jié)構(gòu),格式非常簡單,復(fù)制粘貼即可
(4)撰寫蜘蛛
打印response對象,簡單跑一把
指令:cd firstSpider/firstSpider/spiders
scrapy crawl qiubai
【注意】抓取的時(shí)候會(huì)出錯(cuò)
pip install pypiwin32
根據(jù)response獲取網(wǎng)頁內(nèi)容
response.text 字符串類型
response.body 二進(jìn)制類型
(5)運(yùn)行
scrapy crawl qiubai -o qiubai.json
scrapy crawl qiubai -o qiubai.xml
scrapy crawl qiubai -o qiubai.csv
-
用Scrapy寫爬蟲的步驟:
1)創(chuàng)建項(xiàng)目 scrapy startproject 項(xiàng)目名
2)創(chuàng)建爬蟲 scrapy genspider 爬蟲名 域名
運(yùn)行爬蟲 scrapy crawl 爬蟲名 [-o xx.json/xml/csv]
3)根據(jù)需求編寫item
4)在spiders里面解析數(shù)據(jù)
5)在管道中處理解析完的數(shù)據(jù)