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_name
的Scrapy
項目,如上邊例子。
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
下載頁面的方式獲取頁面。例如,如果spider
有 USER_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