Python Scrapy 命令行工具

scrapy.cfg存放的目錄認定是 項目的根目錄

scrapy 針對不同目的提供了多個命令。

創建項目

$ scrapy startproject my_pro

有些Scrapy命令(比如crawl)要求必須在Scrapy項目中運行,有些則不用

# 全局命令(不需要在項目中執行):
startproject
settings
runspider
shell
fetch
view
version

# 項目命令(必須在項目中執行):
crawl
check
list
edit
parse
genspider
bench

命令注解


startproject

  • 語法:scrapy startproject <project_name>
  • 全局命令

project_name 文件夾下創建一個名為 project_nameScrapy項目,如上邊例子。


genspider

  • 語法:scrapy genspider [-t template] <name> <domain>
  • 項目命令

在當前項目中創建spider

這僅僅是創建spider的一種快捷方法。該方法可以使用提前定義好的模板來生成spider。您也可以自己創建spider的源碼文件。

查看模板的方法如下:

# 查看模板
$ scrapy genspider -l
Available templates:
  basic
  crawl
  csvfeed
  xmlfeed

# 編輯模板
$ scrapy genspider -d basic
# -*- coding: utf-8 -*-
import scrapy


class $classname(scrapy.Spider):
    name = "$name"
    allowed_domains = ["$domain"]
    start_urls = (
        'http://www.$domain/',
    )

    def parse(self, response):
        pass

根據模板來生成spider

$ scrapy genspider -t basic sina sina.com

$ scrapy genspider baidu baidu.com

$ scrapy genspider zhihu zhihu.com

$ scrapy list
baidu
sina
zhihu

$ ls my_pro/spiders/
baidu.py  baidu.pyc  __init__.py  __init__.pyc  sina.py  sina.pyc  zhihu.py  zhihu.pyc

crawl

  • 語法:scrapy crawl <spider>
  • 項目命令

使用spider進行爬取

# 例子
$ scrapy crawl myspider

check

  • 語法:scrapy check [-l] <spider>
  • 項目命令

運行contract檢查。


list

  • 語法:scrapy list
  • 項目命令

列出當前項目中所有可用的spider。每行輸出一個spider

# 例子
$ scrapy list
baidu
sina
zhihu

edit

  • 語法:scrapy edit <spider>
  • 項目命令

使用 EDITOR 中設定的編輯器編輯給定的spider

# 例子
$ scrapy edit baidu

fetch

  • 語法:scrapy fetch <url>
  • 全局命令或項目命令,但結果不同

使用Scrapy下載器(downloader)下載給定的URL

該命令以spider下載頁面的方式獲取頁面。例如,如果spiderUSER_AGENT 屬性修改了 User Agent,該命令將會使用該屬性。

因此,您可以使用該命令來查看spider如何獲取某個特定頁面。

該命令如果非項目中運行則會使用默認Scrapy downloader設定。

# 例子:項目外邊執行

$ scrapy fetch --nolog --headers http://www.baidu.com
> Accept-Language: en
> Accept-Encoding: gzip,deflate
> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
> User-Agent: Scrapy/1.1.1 (+http://scrapy.org)
>
< Bdqid: 0xfbf98a3b0000db32
...
...
...

$ scrapy fetch --nolog  http://www.baidu.com
...
...
...

view

  • 語法:scrapy view <url>
  • 全局命令

在瀏覽器中打開給定的URL,并以Scrapy spider獲取到的形式展現。 有些時候spider獲取到的頁面和普通用戶看到的并不相同。 因此該命令可以用來檢查spider所獲取到的頁面,并確認這是您所期望的。

$ scrapy view http://www.baidu.com

shell

  • 語法:scrapy shell [url]
  • 全局命令

以給定的URL(如果給出)或者空(沒有給出URL)啟動Scrapy shell

$ scrapy shell
$ scrapy shell http://www.baidu.com

parse

  • 語法:scrapy parse <url> [options]
  • 全局命令

獲取給定的URL并使用相應的spider分析處理。如果您提供 --callback 選項,則使用spider的該方法處理,否則使用 parse


settings

  • 語法:scrapy settings [options]
  • 全局命令

獲取Scrapy的設定

在項目中運行時,該命令將會輸出項目的設定值,否則輸出Scrapy默認設定。

$ scrapy settings --get BOT_NAME
scrapybot
$ scrapy settings --get DOWNLOAD_DELAY
0

runspider

  • 語法:scrapy runspider <spider_file.py>
  • 全局命令

在未創建項目的情況下,運行一個編寫在Python文件中的spider

$ scrapy runspider first_mod.py

bench

  • 語法:scrapy bench
  • 全局命令

Scrapy提供了一個簡單的性能測試工具。其創建了一個本地HTTP服務器,并以最大可能的速度進行爬取。 該測試性能工具目的是測試Scrapy在您的硬件上的效率,來獲得一個基本的底線用于對比。 其使用了一個簡單的spider,僅跟進鏈接,不做任何處理。

$ scrapy bench
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容