国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Scrapy爬蟲入門教程三

2019-11-06 07:45:55
字體:
來源:轉載
供稿:網友

Scrapy爬蟲入門教程一 Scrapy爬蟲入門教程二 Scrapy爬蟲入門教程三 開發環境: Python 3.6.0 版本 (當前最新) Scrapy 1.3.2 版本 (當前最新)

命令行工具配置設置Scrapy項目的默認結構使用scrapy工具創建項目控制項目常用的工具命令startPRojectgenspidercrawlchecklisteditfetchviewshellparsesettingsrunspiderversionbench自定義項目命令

命令行工具

Scrapy是通過scrapy命令行工具來控制的,當前最新版本0.10

配置設置

Scrapy將scrapy.cfg在標準位置的ini樣式文件中查找配置參數:

系統默認配置:/etc/scrapy.cfgc:/scrapy/scrapy.cfg

全局配置文件:~/.config/scrapy.cfg$XDG_CONFIG_HOME)和~/.scrapy.cfg$HOME)用于

項目配置文件:scrapy.cfg 在scrapy項目的根目錄中。

來自這些文件的設置將按照所列的優先順序進行合并:用戶定義的值比系統級默認值具有更高的優先級,項目范圍的設置將在定義時覆蓋所有其他設置

Scrapy也理解,并且可以通過配置一些環境變量。目前這些是:

SCRAPY_SETTINGS_MODULE(請參閱指定設置) SCRAPY_PROJECT SCRAPY_PYTHON_SHELL(見Scrapy shell)


Scrapy項目的默認結構

在深入了解命令行工具及其子命令之前,讓我們先了解Scrapy項目的目錄結構。

雖然可以修改,但所有Scrapy項目默認情況下具有相同的文件結構,類似于:

scrapy.cfgmyproject/ __init__.py items.py pipelines.py settings.py spiders/ __init__.py spider1.py spider2.py ...

其中,目錄scrapy.cfg文件位于項目的根目錄。該文件包含定義項目設置的python模塊的名稱。這里是一個例子:

[settings]default = myproject.settings

使用scrapy工具

您可以從運行沒有參數的Scrapy工具開始,它將打印一些使用幫助和可用的命令: 直接在項目根目錄的命令行輸入: scrapy

會得到如下提示:Scrapy 1.3.2 - no active projectUsage: scrapy <command> [options] [args]Available commands: bench Run quick benchmark test commands fetch Fetch a URL using the Scrapy downloader genspider Generate new spider using pre-defined templates runspider Run a self-contained spider (without creating a project) settings Get settings values shell Interactive scraping console startproject Create new project version Print Scrapy version view Open URL in browser, as seen by Scrapy [ more ] More commands available when run from project directoryUse "scrapy <command> -h" to see more info about a command

創建項目

你通常用這個scrapy工具做的第一件事是創建你的Scrapy項目: scrapy startproject myproject [ project_dir ]

這將在該project_dir目錄下創建一個Scrapy項目。如果project_dir沒有指定,project_dir將會和myproject名稱一樣。

接下來,進入新的項目目錄: cd project_dir

您可以使用scrapy命令從那里管理和控制您的項目。


控制項目

您可以使用scrapy項目內部的工具來控制和管理它們。

大家不要著急一下子把所以東西都介紹到,具體細節后面都會寫到。

例如,要創建一個新的爬蟲: scrapy genspider mydomain mydomain.com

通過上述命令創建了一個spider name為CnblogsHomeSpider的爬蟲,start_urls為http://www.cnblogs.com/的爬蟲。

一些Scrapy命令(如crawl)必須從Scrapy項目內部運行。請參閱命令參考下文中的哪些命令必須從內部項目運行的詳細信息。

還要記住,一些命令在從項目中運行時可能有稍微不同的行為。例如,user_agent如果正在獲取的URL與某個特定的爬蟲相關聯,fetch命令將使用爬蟲覆蓋的行為(例如屬性覆蓋用戶代理)。這是有意的,因為該fetch命令用于檢查爬蟲程序如何下載頁面。


常用的工具命令

此部分包含可用內置命令的列表,其中包含描述和一些用法示例。記住,您可以隨時通過運行以下命令獲得有關每個命令的更多信息:

scrapy <command> -h

你可以看到所有可用的命令: scrapy -h

上面兩種命令,它們只能在Scrapy項目內部工作,也可以全局命令的情況下工作(但它們可能會被項目內的配置覆蓋)。

全局命令:

startprojectgenspidersettingsrunspidershellfetchviewversion

僅項目命令:

crawlchecklisteditparsebench

startproject

語法: scrapy startproject <project_name> [project_dir]

在目錄project_name下創建一個名為的Scrapy項目project_dir 。如果project_dir沒有指定,project_dir將會和myproject名稱一樣。

用法示例: $ scrapy startproject myproject

genspider

語法: scrapy genspider [-t template] <name> <domain>

在當前文件夾或當前項目的spiders文件夾中創建一個新的爬蟲,如果從項目中調用。該參數設置為爬蟲的name,而用于生成allowed_domains和start_urls爬蟲的屬性。

用法示例:

$ scrapy genspider -lAvailable templates: basic crawl csvfeed xmlfeed$ scrapy genspider example example.comCreated spider 'example' using template 'basic'$ scrapy genspider -t crawl scrapyorg scrapy.orgCreated spider 'scrapyorg' using template 'crawl'

這只是一個方便的快捷命令,用于創建基于預定義模板的爬蟲,但當然不是唯一的方式來創建爬蟲。您可以自己創建爬蟲源代碼文件,而不是使用此命令。

crawl

語法: scrapy crawl <spider>

使用爬蟲開始爬行。

用法示例:

$ scrapy crawl myspider[ ... myspider starts crawling ... ]

check

語法: scrapy check [-l] <spider>

用法示例:

$ scrapy check -lfirst_spider * parse * parse_itemsecond_spider * parse * parse_item$ scrapy check[FAILED] first_spider:parse_item>>> 'RetailPricex' field is missing[FAILED] first_spider:parse>>> Returned 92 requests, expected 0..4

list

語法: scrapy list

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

用法示例:

$ scrapy列表spider1spider2

edit

語法: scrapy edit <spider>

此命令僅作為最常見情況的方便快捷方式提供,開發人員當然可以選擇任何工具或IDE來編寫和調試他的爬蟲。

用法示例:

$ scrapy edit spider1

fetch

語法: scrapy fetch <url>

使用Scrapy下載器下載給定的URL,并將內容寫入標準輸出。

這個命令的有趣的事情是它獲取爬蟲下載它的頁面。例如,如果爬蟲有一個USER_AGENT 屬性覆蓋用戶代理,它將使用那個。

所以這個命令可以用來“看”你的爬蟲如何獲取一個頁面。

如果在項目外部使用,將不應用特定的每個爬蟲行為,它將只使用默認的Scrapy下載器設置。

支持的選項:

–spider=SPIDER:繞過爬蟲自動檢測和強制使用特定的爬蟲 –headers:打印響應的HTTP頭,而不是響應的正文 –no-redirect:不遵循HTTP 3xx重定向(默認是遵循它們)

用法示例:

$ scrapy fetch --nolog http://www.example.com/some/page.html[ ... html content here ... ]$ scrapy fetch --nolog --headers http://www.example.com/{'Accept-Ranges': ['bytes'], 'Age': ['1263 '], 'Connection': ['close '], 'Content-Length': ['596'], 'Content-Type': ['text/html; charset=UTF-8'], 'Date': ['Wed, 18 Aug 2010 23:59:46 GMT'], 'Etag': ['"573c1-254-48c9c87349680"'], 'Last-Modified': ['Fri, 30 Jul 2010 15:30:18 GMT'], 'Server': ['Apache/2.2.3 (CentOS)']}

view

語法: scrapy view <url>

在瀏覽器中打開給定的URL,因為您的Scrapy爬蟲會“看到”它。有時,爬蟲會看到與普通用戶不同的網頁,因此可以用來檢查爬蟲“看到了什么”并確認它是您期望的。

支持的選項:

–spider=SPIDER:繞過爬蟲自動檢測和強制使用特定的爬蟲 –no-redirect:不遵循HTTP 3xx重定向(默認是遵循它們) 用法示例:

$ scrapy view http://www.example.com/some/page.html[ ... browser starts ... ]

shell

語法: scrapy shell [url] 啟動給定URL(如果給定)的Scrapy shell,如果沒有給出URL,則為空。還支持UNIX樣式的本地文件路徑,相對于 ./或../前綴或絕對文件路徑。有關詳細信息,請參閱Scrapy shell。

支持的選項:

–spider=SPIDER:繞過爬蟲自動檢測和強制使用特定的爬蟲 -c code:評估shell中的代碼,打印結果并退出 –no-redirect:不遵循HTTP 3xx重定向(默認是遵循它們); 這只影響你可以在命令行上作為參數傳遞的URL; 一旦你在shell中,fetch(url)默認情況下仍然會遵循HTTP重定向。 用法示例:

$ scrapy shell http://www.example.com/some/page.html[ ... scrapy shell starts ... ]$ scrapy shell --nolog http://www.example.com/ -c '(response.status, response.url)'(200, 'http://www.example.com/')# shell follows HTTP redirects by default$ scrapy shell --nolog http://httpbin.org/redirect-to?url=http%3A%2F%2Fexample.com%2F -c '(response.status, response.url)'(200, 'http://example.com/')# you can disable this with --no-redirect# (only for the URL passed as command line argument)$ scrapy shell --no-redirect --nolog http://httpbin.org/redirect-to?url=http%3A%2F%2Fexample.com%2F -c '(response.status, response.url)'(302, 'http://httpbin.org/redirect-to?url=http%3A%2F%2Fexample.com%2F')

parse

語法: scrapy parse <url> [options]

獲取給定的URL并使用處理它的爬蟲解析它,使用通過–callback選項傳遞的方法,或者parse如果沒有給出。

支持的選項:

–spider=SPIDER:繞過爬蟲自動檢測和強制使用特定的爬蟲 –a NAME=VALUE:set spider argument(可以重復) –callback或者-c:spider方法用作回調來解析響應 –pipelines:通過管道處理項目 –rules或者-r:使用CrawlSpider 規則來發現用于解析響應的回調(即,spider方法) –noitems:不顯示已抓取的項目 –nolinks:不顯示提取的鏈接 –nocolour:避免使用pygments來著色輸出 –depth或-d:請求應遞歸跟蹤的深度級別(默認值:1) –verbose或-v:顯示每個深度級別的信息 用法示例:

$ scrapy parse http://www.example.com/ -c parse_item[ ... scrapy log lines crawling example.com spider ... ]>>> STATUS DEPTH LEVEL 1 <<<# Scraped Items ------------------------------------------------------------[{'name': u'Example item', 'category': u'Furniture', 'length': u'12 cm'}]# Requests -----------------------------------------------------------------[]

settings

語法: scrapy settings [options]

獲取Scrapy設置的值。

如果在項目中使用,它將顯示項目設置值,否則將顯示該設置的默認Scrapy值。

用法示例:

$ scrapy settings --get BOT_NAMEscrapybot$ scrapy settings --get DOWNLOAD_DELAY0

runspider

語法: scrapy runspider <spider_file.py>

運行一個自包含在Python文件中的爬蟲,而不必創建一個項目。

用法示例:

$ scrapy runspider myspider.py[...爬蟲開始爬行...]

version

語法: scrapy version [-v]

打印Scrapy版本。如果使用-v它也打印Python,Twisted和平臺信息,這是有用的錯誤報告。

bench

新版本0.17。 語法: scrapy bench

運行快速基準測試。基準

自定義項目命令

您還可以使用COMMANDS_MODULE設置添加自定義項目命令 。有關如何實現命令的示例,請參閱scrapy/commands中的Scrapy命令。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 漳州市| 循化| 佛山市| 肃北| 遵义市| 浠水县| 普格县| 开平市| 遂川县| 吴忠市| 红安县| 全椒县| 龙川县| 兴安县| 武川县| 博兴县| 曲靖市| 呈贡县| 策勒县| 东光县| 冀州市| 潞城市| 宜兰市| 维西| 托克逊县| 祥云县| 德庆县| 张北县| 金塔县| 海丰县| 丰城市| 龙陵县| 新巴尔虎右旗| 北京市| 昆明市| 碌曲县| 阳山县| 邵东县| 上高县| 休宁县| 金川县|