摘要:用例運(yùn)行爬蟲(chóng)命令基本語(yǔ)法是否需要項(xiàng)目存在當(dāng)然是不需要咯貌似這個(gè)命令是不依托一個(gè)項(xiàng)目而直接運(yùn)行一個(gè)爬蟲(chóng)的命令。用例我終于寫(xiě)完了,喜歡的就收藏推薦一下吧,這樣我就會(huì)更有動(dòng)力寫(xiě)新的教程了,哇哈哈
0. 基本環(huán)境說(shuō)明
本文截圖及運(yùn)行環(huán)境均在Win8上實(shí)現(xiàn)(是的,我放假回家了,家里的機(jī)器是win8的沒(méi)有辦法),但基本步驟與win 7環(huán)境基本相同。(應(yīng)該把~)ps:我后來(lái)?yè)Q了臺(tái)win7的電腦,所以這篇文章的環(huán)境是win8和win7的結(jié)合體~,哇哈哈~,然而這并沒(méi)有什么卵用~
scrapy版本為1.0.3
這篇文章基本就是很無(wú)恥的翻譯了一下官方文檔順便添加了一點(diǎn)自己的理解
參考文獻(xiàn)以及下載鏈接:
官方1.0.3英文文檔下載
喜歡的就點(diǎn)推薦+收藏把~這樣我會(huì)把我知道的都寫(xiě)出來(lái)的,哇哈哈~
我用的操作系統(tǒng)是64位的,但是python用的是32位的,因?yàn)?2位的包比較全,但是我最近在往64位的服務(wù)器上移植,到時(shí)候有問(wèn)題我會(huì)及時(shí)添加的。
1. scrapy的shell命令詳解 1.1 命令概覽首先可以通過(guò)以下命令來(lái)查看所有scrapy可用的命令類型:
scrapy -h
scrapy目前的命令可以分為項(xiàng)目命令和全局命令兩大類,共14種(嗯 ,我認(rèn)真的數(shù)了兩遍),分布也極其對(duì)稱,項(xiàng)目級(jí)命令7種全局命令7種(嗯,我又認(rèn)真的數(shù)了一遍)。
分別是:
全局命令
startproject
settings
runspider
shell
fetch
view
version
項(xiàng)目命令
crawl
check
list
edit
parse
genspider
bench
哇哈哈,然我們接著開(kāi)始一一學(xué)習(xí)一下這些命令吧,有些命令好用的不要不要的哦~
1.2 全局命令解析 1.2.1 startproject 創(chuàng)建項(xiàng)目命令基本語(yǔ)法:scrapy startproject
是否需要項(xiàng)目存在:當(dāng)然是不需要咯~
其實(shí)這個(gè)命令我們?cè)谥暗慕坛坍?dāng)中也用過(guò)了,應(yīng)該不陌生,就是在創(chuàng)建一個(gè)名為project_name的爬蟲(chóng)框架,供我們調(diào)教(猥瑣臉)。是創(chuàng)建爬蟲(chóng)項(xiàng)目開(kāi)天辟地的第一步喲~。
用例
scrapy startproject njupt #嗯,我無(wú)恥的修改了官方的例子,在運(yùn)行命令行的目錄下面創(chuàng)建了一個(gè)名為njupt的文件夾,里面存放了一個(gè)名為njupt的scrapy框架1.2.2 settings 查看配置文件參數(shù)命令
基本語(yǔ)法:scrapy settings [options]
是否需要項(xiàng)目存在:當(dāng)然是不需要咯~(這是官方寫(xiě)的,貌似有點(diǎn)問(wèn)題)
嘛這個(gè)命令是用來(lái)查看項(xiàng)目參數(shù)的。官方文檔說(shuō)不需要項(xiàng)目,經(jīng)過(guò)本人測(cè)試,如果在項(xiàng)目目錄下,就會(huì)顯示出項(xiàng)目的settings.py里面對(duì)應(yīng)的項(xiàng)目的內(nèi)容,如果實(shí)在項(xiàng)目目錄之外,貌似會(huì)返回一個(gè)scrapy的默認(rèn)值,我個(gè)人建議大家在項(xiàng)目目錄下使用這個(gè)命令來(lái)查看settings.py里面的內(nèi)容就ok了。
用例
scrapy settings --get BOT_NAME1.2.3 runspider 運(yùn)行爬蟲(chóng)命令
基本語(yǔ)法:scrapy runspider
是否需要項(xiàng)目存在:當(dāng)然是不需要咯~
貌似這個(gè)命令是不依托一個(gè)scrapy項(xiàng)目而直接運(yùn)行一個(gè)爬蟲(chóng)的命令。弱弱的說(shuō)一句,這種沒(méi)有settings沒(méi)有pipelines的爬蟲(chóng)真的好么
用例
scrapy runspider njupt.py1.2.4 shell 創(chuàng)建一個(gè)shell環(huán)境用于調(diào)試response的命令(很重要?。?!)
基本語(yǔ)法:scrapy shell [url]
是否需要項(xiàng)目存在:當(dāng)然是不需要咯~
這個(gè)命令真的很重要啦~,主要目的是創(chuàng)建一個(gè)shell環(huán)境用于調(diào)試response的命令(嗯,和標(biāo)題一模一樣),因?yàn)樗匾耍晕遗R時(shí)決定回來(lái)專門寫(xiě)一篇文章來(lái)介紹這個(gè)命令,迫不及待的同學(xué)去翻官方文檔吧~(其實(shí)我是累了,因?yàn)槲乙贿叴a字一遍在重裝電腦而且現(xiàn)在也半夜十二點(diǎn)多了~說(shuō)好的早睡又泡湯的)
用例:
scrapy shell http://www.njupt.edu.cn1.2.5 fetch 顯示爬取過(guò)程
基本語(yǔ)法:scrapy fetch [url]
是否需要項(xiàng)目存在:貌似有沒(méi)有都行
這個(gè)命令其實(shí)是在標(biāo)準(zhǔn)輸出中顯示調(diào)用一個(gè)爬蟲(chóng)來(lái)爬取指定的url的全過(guò)程。
要注意的一點(diǎn)是,如果是在一個(gè)項(xiàng)目目錄下使用這個(gè)命令則會(huì)默認(rèn)調(diào)用這個(gè)項(xiàng)目當(dāng)中的爬蟲(chóng),如果在項(xiàng)目目錄之外使用這個(gè)命令,則會(huì)調(diào)用scrapy默認(rèn)的爬蟲(chóng)來(lái)爬取。所以有沒(méi)有項(xiàng)目存在都能運(yùn)行。
用例:
scrapy fetch http://www.njupt.edu.cn #會(huì)顯示抓取的過(guò)程,以及抓取的html的內(nèi)容
scrapy fetch --nolog --headers http://www.njupt.edu.com/ #可以添加一些參數(shù)來(lái),觀察各種信息,如添加個(gè): --nolog 可以忽略很多煩人的日志 --headers 用來(lái)查看請(qǐng)求時(shí)的頭部信息1.2.6 view 查看頁(yè)面內(nèi)容命令
基本語(yǔ)法:scrapy view [url]
是否需要項(xiàng)目存在:無(wú)需項(xiàng)目存在
當(dāng)你對(duì)于某些信息死也提取不出來(lái)的時(shí)候就要考慮使用一下使用這個(gè)view了,這個(gè)命令是給你下載一個(gè)頁(yè)面并用瀏覽器打開(kāi),目的是讓你對(duì)比一下scrapy"看到"的頁(yè)面和你通過(guò)瀏覽器看到的頁(yè)面有什么不同,這個(gè)對(duì)于某些動(dòng)態(tài)生成的網(wǎng)頁(yè)很有作用!但是這里有個(gè)坑大家注意一下,我在Win7環(huán)境下,使用這個(gè)命令的時(shí)候在下載對(duì)應(yīng)網(wǎng)頁(yè)的同時(shí)用瀏覽器打開(kāi)(目測(cè)純命令行無(wú)圖形界面的Linux因該不會(huì)自動(dòng)打開(kāi)瀏覽器),此時(shí)里面的ajax因?yàn)橛辛藶g覽器打開(kāi),又被執(zhí)行了,所以通過(guò)瀏覽器打開(kāi)的頁(yè)面應(yīng)該和你正常訪問(wèn)的網(wǎng)頁(yè)并無(wú)二致,但并不是真正scrapy看到的網(wǎng)頁(yè)。如何看到真正的網(wǎng)頁(yè)內(nèi)?很簡(jiǎn)單啦,找到原始地址用sublime打開(kāi)就是啦~。原始地址就在瀏覽器的地址欄里哦~
用例:
scrapy view http://item.jd.com/1319191.html #嗯,我背叛了大njupt,因?yàn)槲覀儗W(xué)校的網(wǎng)站太牛X沒(méi)有使用ajax,所以我就用大JD做例子了。1.2.7 version 顯示版本信息
基本語(yǔ)法:scrapy version [-v]
是否需要項(xiàng)目存在:無(wú)需項(xiàng)目存在
此命令很簡(jiǎn)單,就是顯示scrapy的版本,如果加上-v命令則還會(huì)顯示Python, Twisted和平臺(tái)的信息,貌似對(duì)于bug尋找和報(bào)告很有幫助!
1.3 項(xiàng)目命令解析 1.3.1 genspider 通過(guò)模板生成爬蟲(chóng)基本語(yǔ)法:scrapy genspider [-t template]
是否需要項(xiàng)目存在:項(xiàng)目命令嘛,果斷需要~
這個(gè)命令主要是幫助我們?cè)诰帉?xiě)多個(gè)爬蟲(chóng)的時(shí)候,利用現(xiàn)有爬蟲(chóng)來(lái)快速生成新的爬蟲(chóng),當(dāng)然這不是唯一創(chuàng)建新爬蟲(chóng)的方式,騷年,不嫌累的話可以自己重新敲一個(gè)~
用例:
scrapy genspider -l
通過(guò)添加參數(shù)-l來(lái)查看現(xiàn)有的爬蟲(chóng)模板
scrapy genspider -d basic
通過(guò)添加參數(shù)-d和模板名稱來(lái)查看現(xiàn)有模板的內(nèi)容,嘛如果實(shí)在linux環(huán)境下會(huì)比較好用,我等在win下面混的菜鳥(niǎo)還是右鍵用sublime來(lái)查看內(nèi)容吧
scrapy genspider -t basic example example.com
這就是激動(dòng)人心的生成爬蟲(chóng)的方式了,通過(guò)參數(shù)-t后面緊接著的內(nèi)容是模板名稱 新爬蟲(chóng)的名稱 新爬蟲(chóng)允許爬取的域名,貌似一般爬蟲(chóng)名稱基本都是域名主體呢~,聰明的同學(xué)也知道這里新爬蟲(chóng)名稱 新爬蟲(chóng)允許爬取的域名分別對(duì)應(yīng)的就是之前上一篇教程提到的name和allowed_domains這兩個(gè)參數(shù)咯。
1.3.2 crawl 啟動(dòng)爬蟲(chóng)命令基本語(yǔ)法: scrapy crawl
是否需要項(xiàng)目存在:項(xiàng)目命令嘛,果斷需要~
這個(gè)命令是很激動(dòng)人心的,每次寫(xiě)完爬蟲(chóng)就迫不及待的一試,大家在上篇教程中想必也已經(jīng)實(shí)驗(yàn)過(guò)了。不過(guò)貌似一次只能跑一個(gè)爬蟲(chóng),想運(yùn)行多個(gè)爬蟲(chóng)怎么辦呢?我現(xiàn)在想到的兩個(gè)解決方案
1.自己寫(xiě)一個(gè)bat或者shell腳本
2.自己添加一個(gè)scrapy的shell命令(沒(méi)錯(cuò),聽(tīng)起來(lái)屌飛了,我會(huì)在以后的教程中告訴你怎么做的,想看的以后的教程,哼哼~,我才不會(huì)請(qǐng)你點(diǎn)推薦加收藏呢~)
用例:
scrapy crawl njupt #咩哈哈,啟動(dòng)njupt爬蟲(chóng)吧騷年~1.3.3 check 檢查爬蟲(chóng)完整性
基本語(yǔ)法: scrapy check [-l]
是否需要項(xiàng)目存在:項(xiàng)目命令嘛,果斷需要~
這個(gè)命令官方寫(xiě)的是Contect檢查然后就沒(méi)了,我在win7下面試了一下,能檢查出一部分錯(cuò)誤,但是后面加一個(gè)-l參數(shù)貌似沒(méi)什么用啊,沒(méi)有顯示出官方文檔例子里面的spider列表和函數(shù)列表,倒是有一堆warning,我回來(lái)研究研究一下源碼看看把,這個(gè)命令目前就是檢查一些語(yǔ)法、import和warning等錯(cuò)誤,邏輯錯(cuò)誤肯定是查不出來(lái)的啦~
用例:
scrapy check njupt1.3.4 list 查看爬蟲(chóng)列表命令
基本語(yǔ)法: scrapy list
是否需要項(xiàng)目存在:項(xiàng)目命令嘛,果斷需要~
這個(gè)命令就是查看一下這個(gè)項(xiàng)目里面目前有哪些爬蟲(chóng)~,寫(xiě)了很多的爬蟲(chóng)之后打這個(gè)命令有一種閱兵的快感呢~,一般linux環(huán)境下使用較多~
用例:
scrapy list1.3.5 edit 編輯爬蟲(chóng)命令
基本語(yǔ)法: scrapy edit
是否需要項(xiàng)目存在:項(xiàng)目命令嘛,果斷需要~
典型的在linux里面用的高大上命令啊,輸入此命令可以立刻調(diào)取settings.py中的editor指定的編輯器來(lái)打開(kāi)爬蟲(chóng)進(jìn)行編輯(是的,settings.py里面還能配這么屌的參數(shù)我也很震驚)。順便說(shuō)一句我的win7系統(tǒng)運(yùn)行之后直接報(bào)錯(cuò)...傷心啊
用例:
scrapy edit njupt1.3.6 parse
基本語(yǔ)法: scrapy parse
是否需要項(xiàng)目存在:項(xiàng)目命令嘛,果斷需要~
這方法適合測(cè)試自己寫(xiě)的spider和后續(xù)各種組建如:pipeline等組合使用的情況,我一般用來(lái)測(cè)試自己編寫(xiě)的spider(在沒(méi)有見(jiàn)過(guò)這個(gè)命令之前我一直是用crawl命令來(lái)測(cè)試的...悲劇?。?。
支持的參數(shù)倒是蠻豐富的:
--spider=SPIDER: 沒(méi)有指定spider的情況下其程序搜索,用這個(gè)選項(xiàng)可以強(qiáng)行指定某個(gè)spider
--a NAME=VALUE: 用來(lái)設(shè)定spider需要的參數(shù),可以多個(gè)
--callback或-c: 指定spider里面用于處理response的函數(shù),沒(méi)有強(qiáng)行制定的話,默認(rèn)使用parse函數(shù)
--pipelines:用來(lái)指定后續(xù)的pipelines,可以靈活定制哦~
--rules或-r: 通過(guò)CrawlSpider設(shè)定的規(guī)則來(lái)選取對(duì)應(yīng)的函數(shù)當(dāng)作解析response的回調(diào)函數(shù)
--noitems: 不顯示抓取的items
--nolinks: 不顯示提取的鏈接
--nocolour: 輸出的結(jié)果不要高亮顯示(這個(gè)選項(xiàng)還是不要用得好)
--depth或-d: 設(shè)置爬取深度,默認(rèn)為1哦~
--verbose或-v: 顯示被爬取的每層的相關(guān)信息
用列:
scrapy parse http://www.njupt.edu.cn1.3.7 bench 硬件測(cè)試命令
基本語(yǔ)法: scrapy bench
是否需要項(xiàng)目存在:不需要
這個(gè)命令我個(gè)人理解就是對(duì)你的硬件做一個(gè)爬蟲(chóng)的壓力測(cè)試,看看不考慮網(wǎng)絡(luò)的情況下你的硬件究竟能將這個(gè)爬蟲(chóng)運(yùn)行的多快。當(dāng)然這個(gè)有點(diǎn)理論速度的味道,實(shí)際上你爬起來(lái)不可能這個(gè)么快。姑且算是告訴你硬件的瓶頸的方法吧。不過(guò)我win7上運(yùn)行了貌似沒(méi)有什么用,沒(méi)有出現(xiàn)官方說(shuō)好的各種參數(shù),回來(lái)有空還要仔細(xì)研究一下啊。
用例:
scrapy bench
我終于寫(xiě)完了,喜歡的就收藏+推薦一下吧,這樣我就會(huì)更有動(dòng)力寫(xiě)新的教程了,哇哈哈~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/37603.html
摘要:注意爬豆爬一定要加入選項(xiàng),因?yàn)橹灰馕龅骄W(wǎng)站的有,就會(huì)自動(dòng)進(jìn)行過(guò)濾處理,把處理結(jié)果分配到相應(yīng)的類別,但偏偏豆瓣里面的為空不需要分配,所以一定要關(guān)掉這個(gè)選項(xiàng)。 本課只針對(duì)python3環(huán)境下的Scrapy版本(即scrapy1.3+) 選取什么網(wǎng)站來(lái)爬取呢? 對(duì)于歪果人,上手練scrapy爬蟲(chóng)的網(wǎng)站一般是官方練手網(wǎng)站 http://quotes.toscrape.com 我們中國(guó)人,當(dāng)然...
摘要:如果想先學(xué)習(xí)的話推薦看下基礎(chǔ)教學(xué)菜鳥(niǎo)教程這個(gè)網(wǎng)站的教程里面的內(nèi)容還是挺不錯(cuò)的非常適合小白學(xué)習(xí)好了廢話不多說(shuō)開(kāi)始學(xué)習(xí)如何安裝吧安裝我上篇小白爬蟲(chóng)篇簡(jiǎn)介下面的鏈接安裝包后在或者在中輸入命令過(guò)程中可能會(huì)問(wèn)你是否安裝其他擴(kuò)展包選按回車就好了安裝完成 如果想先學(xué)習(xí)python的話推薦看下Python基礎(chǔ)教學(xué)|菜鳥(niǎo)教程這個(gè)網(wǎng)站的教程,里面的內(nèi)容還是挺不錯(cuò)的非常適合小白學(xué)習(xí)好了廢話不多說(shuō)開(kāi)始學(xué)習(xí)如何...
摘要:如果安裝了,終端將使用替代標(biāo)準(zhǔn)終端。終端與其他相比更為強(qiáng)大,提供智能的自動(dòng)補(bǔ)全,高亮輸出,及其他特性。也提供了一些快捷方式例如或同樣可以生效如之前的案例。當(dāng)然作用不僅僅如此,但是不屬于我們課程重點(diǎn),不做詳細(xì)介紹。 Scrapy Shell Scrapy終端是一個(gè)交互終端,我們可以在未啟動(dòng)spider的情況下嘗試及調(diào)試代碼,也可以用來(lái)測(cè)試XPath或CSS表達(dá)式,查看他們的工作方式,方便...
摘要:用于下載網(wǎng)頁(yè)內(nèi)容,并將網(wǎng)頁(yè)內(nèi)容返回給。中間件位于引擎和下載器之間的鉤子框架,主要是處理引擎與下載器之間的請(qǐng)求及響應(yīng)。包含了在啟動(dòng)時(shí)進(jìn)行爬取的列表。對(duì)象經(jīng)過(guò)調(diào)度,執(zhí)行生成對(duì)象并送回給方法一般返回實(shí)例。 Scrapy 是什么 Scrapy 是一個(gè)為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫(xiě)的應(yīng)用框架。 可以應(yīng)用在包括數(shù)據(jù)挖掘,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中。其最初是為了頁(yè)面抓取 (更確切...
安裝scrapy 不同操作系統(tǒng)安裝操作不同,可以直接看官方文檔Install Scrapy 創(chuàng)建一個(gè)項(xiàng)目 在命令行輸入 scrapy startproject tutorial 進(jìn)入項(xiàng)目目錄創(chuàng)建一個(gè)spider cd tutorial scrapy genspider quotes domain.com import scrapy class QuotesSpider(scrapy.Spider...
閱讀 3489·2023-04-25 22:04
閱讀 2244·2021-11-22 15:29
閱讀 2231·2021-10-11 10:57
閱讀 1482·2021-09-24 09:48
閱讀 3200·2021-09-09 09:34
閱讀 2625·2021-09-02 15:21
閱讀 2448·2019-08-30 15:53
閱讀 1190·2019-08-30 14:07