創(chuàng)建爬蟲(chóng)項(xiàng)目

scrapy startproject 項(xiàng)目名
例子如下:

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

localhost:spider zhaofan$ scrapy startproject test1
New Scrapy project 'test1', using template directory '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/scrapy/templates/project', created in:    /Users/zhaofan/Documents/python_project/spider/test1

You can start your first spider with:
    cd test1
    scrapy genspider example example.com
localhost:spider zhaofan$

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

這個(gè)時(shí)候爬蟲(chóng)的目錄結(jié)構(gòu)就已經(jīng)創(chuàng)建完成了,目錄結(jié)構(gòu)如下:

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

|____scrapy.cfg|____test1| |______init__.py| |____items.py| |____middlewares.py| |____pipelines.py| |____settings.py| |____spiders| | |______init__.py

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

接著我們按照提示可以生成一個(gè)spider,這里以百度作為例子,生成spider的命令格式為;
scrapy genspider 爬蟲(chóng)名字 爬蟲(chóng)的網(wǎng)址

localhost:test1 zhaofan$ scrapy genspider baiduSpider baidu.com
Created spider 'baiduSpider' using template 'basic' in module:
  test1.spiders.baiduSpider
localhost:test1 zhaofan$

關(guān)于命令詳細(xì)使用

命令的使用范圍

這里的命令分為全局的命令和項(xiàng)目的命令,全局的命令表示可以在任何地方使用,而項(xiàng)目的命令只能在項(xiàng)目目錄下使用

全局的命令有:
startproject
genspider
settings
runspider
shell
fetch
view
version

項(xiàng)目命令有:
crawl
check
list
edit
parse
bench

startproject
這個(gè)命令沒(méi)什么過(guò)多的用法,就是在創(chuàng)建爬蟲(chóng)項(xiàng)目的時(shí)候用

genspider
用于生成爬蟲(chóng),這里scrapy提供給我們不同的幾種模板生成spider,默認(rèn)用的是basic,我們可以通過(guò)命令查看所有的模板

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

localhost:test1 zhaofan$ scrapy genspider -l
Available templates:
  basic
  crawl
  csvfeed
  xmlfeed
localhost:test1 zhaofan$

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

當(dāng)我們創(chuàng)建的時(shí)候可以指定模板,不指定默認(rèn)用的basic,如果想要指定模板則通過(guò)
scrapy genspider -t 模板名字

localhost:test1 zhaofan$ scrapy genspider -t crawl zhihuspider zhihu.com
Created spider 'zhihuspider' using template 'crawl' in module:
  test1.spiders.zhihuspider
localhost:test1 zhaofan$

crawl

這個(gè)是用去啟動(dòng)spider爬蟲(chóng)格式為:
scrapy crawl 爬蟲(chóng)名字
這里需要注意這里的爬蟲(chóng)名字和通過(guò)scrapy genspider 生成爬蟲(chóng)的名字是一致的

check
用于檢查代碼是否有錯(cuò)誤,scrapy check

list
scrapy list列出所有可用的爬蟲(chóng)

fetch
scrapy fetch url地址 
該命令會(huì)通過(guò)scrapy downloader 講網(wǎng)頁(yè)的源代碼下載下來(lái)并顯示出來(lái)

這里有一些參數(shù):
--nolog 不打印日志
--headers 打印響應(yīng)頭信息
--no-redirect 不做跳轉(zhuǎn)

view
scrapy view url地址
該命令會(huì)講網(wǎng)頁(yè)document內(nèi)容下載下來(lái),并且在瀏覽器顯示出來(lái)

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

因?yàn)楝F(xiàn)在很多網(wǎng)站的數(shù)據(jù)都是通過(guò)ajax請(qǐng)求來(lái)加載的,這個(gè)時(shí)候直接通過(guò)requests請(qǐng)求是無(wú)法獲取我們想要的數(shù)據(jù),所以這個(gè)view命令可以幫助我們很好的判斷

shell
這是一個(gè)命令行交互模式
通過(guò)scrapy shell url地址進(jìn)入交互模式
這里我么可以通過(guò)css選擇器以及xpath選擇器獲取我們想要的內(nèi)容(xpath以及css選擇的用法會(huì)在下個(gè)文章中詳細(xì)說(shuō)明),例如我們通過(guò)scrapy shell http://www.baidu.com

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

這里最后給我們返回一個(gè)response,這里的response就和我們通requests請(qǐng)求網(wǎng)頁(yè)獲取的數(shù)據(jù)是相同的。
view(response)會(huì)直接在瀏覽器顯示結(jié)果
response.text 獲取網(wǎng)頁(yè)的文本
下圖是css選擇器的一個(gè)簡(jiǎn)單用法

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

 

 settings
獲取當(dāng)前的配置信息
通過(guò)scrapy settings -h可以獲取這個(gè)命令的所有幫助信息

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

localhost:jobboleSpider zhaofan$ scrapy settings -h
Usage=====
  scrapy settings [options]

Get settings values

Options=======
--help, -h              show this help message and exit--get=SETTING           print raw setting value--getbool=SETTING       print setting value, interpreted as a boolean--getint=SETTING        print setting value, interpreted as an integer--getfloat=SETTING      print setting value, interpreted as a float--getlist=SETTING       print setting value, interpreted as a list

Global Options--------------
--logfile=FILE          log file. if omitted stderr will be used--loglevel=LEVEL, -L LEVEL
                        log level (default: DEBUG)--nolog                 disable logging completely--profile=FILE          write python cProfile stats to FILE--pidfile=FILE          write process ID to FILE--set=NAME=VALUE, -s NAME=VALUE
                        set/override setting (may be repeated)--pdb                   enable pdb on failure

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

拿一個(gè)例子進(jìn)行簡(jiǎn)單的演示:(這里是我的這個(gè)項(xiàng)目的settings配置文件中配置了數(shù)據(jù)庫(kù)的相關(guān)信息,可以通過(guò)這種方式獲取,如果沒(méi)有獲取的則為None)

localhost:jobboleSpider zhaofan$ scrapy settings --get=MYSQL_HOST192.168.1.18localhost:jobboleSpider zhaofan$

runspider
這個(gè)和通過(guò)crawl啟動(dòng)爬蟲(chóng)不同,這里是scrapy runspider 爬蟲(chóng)文件名稱
所有的爬蟲(chóng)文件都是在項(xiàng)目目錄下的spiders文件夾中

version
查看版本信息,并查看依賴庫(kù)的信息

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

localhost:~ zhaofan$ scrapy version
Scrapy 1.3.2localhost:~ zhaofan$ scrapy version -v
Scrapy    : 1.3.2lxml      : 3.7.3.0libxml2   : 2.9.4cssselect : 1.0.1parsel    : 1.1.0w3lib     : 1.17.0Twisted   : 17.1.0Python    : 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25) - [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
pyOpenSSL : 16.2.0 (OpenSSL 1.0.2k  26 Jan 2017)
Platform  : Darwin-16.6.0-x86_64-i386-64bit

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

http://www.cnblogs.com/zhaof/p/7183220.html