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