Scrapy框架的命令行詳解【轉】

Scrapy框架的命令行詳解

請給做者點贊 --> 原文連接

這篇文章主要是對的scrapy命令行使用的一個介紹css

建立爬蟲項目

scrapy startproject 項目名
例子以下:html

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$

這個時候爬蟲的目錄結構就已經建立完成了,目錄結構以下:python

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

接着咱們按照提示能夠生成一個spider,這裏以百度做爲例子,生成spider的命令格式爲;
scrapy genspider 爬蟲名字 爬蟲的網址web

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

 

關於命令詳細使用

命令的使用範圍

這裏的命令分爲全局的命令和項目的命令,全局的命令表示能夠在任何地方使用,而項目的命令只能在項目目錄下使用ajax

全局的命令有:

startproject
genspider
settings
runspider
shell
fetch
view
versionshell

項目命令有:

crawl
check
list
edit
parse
bench數據庫

startproject

這個命令沒什麼過多的用法,就是在建立爬蟲項目的時候用瀏覽器

# 建立項目
scrapy startprojects myproject

 

genspider

用於生成爬蟲,這裏scrapy提供給咱們不一樣的幾種模板生成spider,默認用的是basic,咱們能夠經過命令查看全部的模板框架

# 列出全部的模版
scrapy genspider -l
localhost:test1 zhaofan$ scrapy genspider -l
Available templates:
  basic
  crawl
  csvfeed
  xmlfeed
localhost:test1 zhaofan$ 

 

當咱們建立的時候能夠指定模板,不指定默認用的basic,若是想要指定模板則經過
scrapy genspider -t 模板名字scrapy

# 生成一個項目模版
scrapy genspider -t crawl zhihu wwww.zhihu.com
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 爬蟲名字

# 運行spider
scrapy crawl spidername

這裏須要注意這裏的爬蟲名字和經過scrapy genspider 生成爬蟲的名字是一致的

check

用於檢查代碼是否有錯誤,scrapy check

# check 用來檢查代碼是否有錯誤
scrapy check  

 

list

scrapy list列出全部可用的爬蟲

# list 返回項目裏面全部spider的名稱
scrapy list

 

edit

edit 在命令行下編輯spider ### 不建議運行
scrapy edit myspider

 

fetch

scrapy fetch url地址 
該命令會經過scrapy downloader 講網頁的源代碼下載下來並顯示出來

這裏有一些參數:
--nolog 不打印日誌
--headers 打印響應頭信息
--no-redirect 不作跳轉

# fetch 輸出日誌及網頁源代碼
scrapy fetch http://www.baidu.com

# fetch --nolog 只輸出源代碼
scrapy fetch --nolog http://www.baidu.com

# fetch --nolog --headers 輸出響應頭
scrapy fetch --nolog --headers http://www.baidu.com

# --nolog --no--redirect 禁止重定向
scrapy fetch --nolog --no--redirect http://www.baidu.com

 

view

scrapy view url地址
該命令會講網頁document內容下載下來,而且在瀏覽器顯示出來

# view 從瀏覽器中打開網頁
scrapy view http://www.taobao.com

由於如今不少網站的數據都是經過ajax請求來加載的,這個時候直接經過requests請求是沒法獲取咱們想要的數據,因此這個view命令能夠幫助咱們很好的判斷

shell

這是一個命令行交互模式
經過scrapy shell url地址進入交互模式

# shell 命令行交互模式
csrapy shell http://www.baidu.com

這裏我麼能夠經過css選擇器以及xpath選擇器獲取咱們想要的內容(xpath以及css選擇的用法會在下個文章中詳細說明),例如咱們經過scrapy shell http://www.baidu.com

這裏最後給咱們返回一個response,這裏的response就和咱們通requests請求網頁獲取的數據是相同的。
view(response)會直接在瀏覽器顯示結果
response.text 獲取網頁的文本
下圖是css選擇器的一個簡單用法

 

settings

獲取當前的配置信息
經過scrapy settings -h能夠獲取這個命令的全部幫助信息

# 獲取幫助信息
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
相關文章
相關標籤/搜索