Python爬蟲從入門到放棄(十三)之 Scrapy框架的命令行詳解
這篇文章主要是對的scrapy命令行使用的一個介紹
創建爬蟲項目
scrapy startproject 項目名
例子如下:
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$
這個時候爬蟲的目錄結構就已經創建完成了,目錄結構如下:
|____scrapy.cfg |____test1 | |______init__.py | |____items.py | |____middlewares.py | |____pipelines.py | |____settings.py | |____spiders | | |______init__.py
接著我們按照提示可以生成一個spider,這裏以百度作為例子,生成spider的命令格式為;
scrapy genspider 爬蟲名字 爬蟲的網址
localhost:test1 zhaofan$ scrapy genspider baiduSpider baidu.com Created spider‘baiduSpider‘ using template ‘basic‘ in module: test1.spiders.baiduSpider localhost:test1 zhaofan$
關於命令詳細使用
命令的使用範圍
這裏的命令分為全局的命令和項目的命令,全局的命令表示可以在任何地方使用,而項目的命令只能在項目目錄下使用
全局的命令有:
startproject
genspider
settings
runspider
shell
fetch
view
version
項目命令有:
crawl
check
list
edit
parse
bench
startproject
這個命令沒什麽過多的用法,就是在創建爬蟲項目的時候用
genspider
用於生成爬蟲,這裏scrapy提供給我們不同的幾種模板生成spider,默認用的是basic,我們可以通過命令查看所有的模板
localhost:test1 zhaofan$ scrapy genspider -l
Available templates:
basic
crawl
csvfeed
xmlfeed
localhost:test1 zhaofan$
當我們創建的時候可以指定模板,不指定默認用的basic,如果想要指定模板則通過
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
這個是用去啟動spider爬蟲格式為:
scrapy crawl 爬蟲名字
這裏需要註意這裏的爬蟲名字和通過scrapy genspider 生成爬蟲的名字是一致的
check
用於檢查代碼是否有錯誤,scrapy check
list
scrapy list列出所有可用的爬蟲
fetch
scrapy fetch url地址
該命令會通過scrapy downloader 講網頁的源代碼下載下來並顯示出來
這裏有一些參數:
--nolog 不打印日誌
--headers 打印響應頭信息
--no-redirect 不做跳轉
view
scrapy view url地址
該命令會講網頁document內容下載下來,並且在瀏覽器顯示出來
因為現在很多網站的數據都是通過ajax請求來加載的,這個時候直接通過requests請求是無法獲取我們想要的數據,所以這個view命令可以幫助我們很好的判斷
shell
這是一個命令行交互模式
通過scrapy shell url地址進入交互模式
這裏我麽可以通過css選擇器以及xpath選擇器獲取我們想要的內容(xpath以及css選擇的用法會在下個文章中詳細說明),例如我們通過scrapy shell http://www.baidu.com
這裏最後給我們返回一個response,這裏的response就和我們通requests請求網頁獲取的數據是相同的。
view(response)會直接在瀏覽器顯示結果
response.text 獲取網頁的文本
下圖是css選擇器的一個簡單用法
settings
獲取當前的配置信息
通過scrapy settings -h可以獲取這個命令的所有幫助信息
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
拿一個例子進行簡單的演示:(這裏是我的這個項目的settings配置文件中配置了數據庫的相關信息,可以通過這種方式獲取,如果沒有獲取的則為None)
localhost:jobboleSpider zhaofan$ scrapy settings --get=MYSQL_HOST 192.168.1.18 localhost:jobboleSpider zhaofan$
runspider
這個和通過crawl啟動爬蟲不同,這裏是scrapy runspider 爬蟲文件名稱
所有的爬蟲文件都是在項目目錄下的spiders文件夾中
version
查看版本信息,並查看依賴庫的信息
localhost:~ zhaofan$ scrapy version Scrapy 1.3.2 localhost:~ zhaofan$ scrapy version -v Scrapy : 1.3.2 lxml : 3.7.3.0 libxml2 : 2.9.4 cssselect : 1.0.1 parsel : 1.1.0 w3lib : 1.17.0 Twisted : 17.1.0 Python : 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
Python爬蟲從入門到放棄(十三)之 Scrapy框架的命令行詳解