前幾天給大家分享了關(guān)于Scrapy爬蟲(chóng)項(xiàng)目運(yùn)行和調(diào)試的小技巧上篇,沒(méi)來(lái)得及上車(chē)的小伙伴可以戳超鏈接看一下。今天小編繼續(xù)沿著上篇的思路往下延伸,給大家分享更為實(shí)用的Scrapy項(xiàng)目調(diào)試技巧。
三、設(shè)置網(wǎng)站robots.txt規(guī)則為False
一般的,我們?cè)谶\(yùn)用Scrapy框架抓取數(shù)據(jù)之前,需要提前到settings.py文件中,將“ROBOTSTXT_OBEY = True”改為ROBOTSTXT_OBEY = False。
在未改動(dòng)之后settings.py文件中默認(rèn)爬蟲(chóng)是遵守網(wǎng)站的robots.txt規(guī)則的,如下圖所示。
如果遵守robots.txt規(guī)則的話(huà),那么爬取的結(jié)果會(huì)自動(dòng)過(guò)濾掉很多我們想要的目標(biāo)信息,因此有必要將該參數(shù)設(shè)置為False,如下圖所示。
設(shè)置好robots.txt規(guī)則之后,我們便可以抓到更多網(wǎng)頁(yè)的信息。
四、利用Scrapy shell進(jìn)行調(diào)試
通常我們要運(yùn)行Scrapy爬蟲(chóng)程序的時(shí)候會(huì)在命令行中輸入“scrapy crawl crawler_name”,細(xì)心的小伙伴應(yīng)該知道上篇文章中創(chuàng)建的main.py文件也是可以提高調(diào)試效率的,不過(guò)這兩種方法都是需要從頭到尾運(yùn)行Scrapy爬蟲(chóng)項(xiàng)目,每次都需要請(qǐng)求一次URL,效率十分低。運(yùn)行過(guò)Scrapy爬蟲(chóng)項(xiàng)目的小伙伴都知道Scrapy運(yùn)行的時(shí)候相對(duì)較慢,有時(shí)候因?yàn)榫W(wǎng)速不穩(wěn)定,根部就無(wú)法動(dòng)彈。針對(duì)每次都需要運(yùn)行Scrapy爬蟲(chóng)的問(wèn)題,這里介紹Scrapy shell調(diào)試方法給大家,可以事半功倍噢。
Scrapy給我們提供了一種shell模式,讓我們可以在shell腳本之下獲取整個(gè)URL對(duì)應(yīng)的網(wǎng)頁(yè)源碼。在命令行中進(jìn)行運(yùn)行,其語(yǔ)法命令是“scrapy shell URL”,URL是指你需要抓取的網(wǎng)頁(yè)網(wǎng)址或者鏈接,如下圖所示。
該命令代表的意思是對(duì)該URL進(jìn)行調(diào)試,當(dāng)命令執(zhí)行之后,我們就已經(jīng)獲取到了該URL所對(duì)應(yīng)的網(wǎng)頁(yè)內(nèi)容,之后我們就可以在該shell下進(jìn)行調(diào)試,再也不用每次都執(zhí)行Scrapy爬蟲(chóng)程序,發(fā)起URL請(qǐng)求了。
通過(guò)shell腳本這種方式可以極大的提高調(diào)試的效率,具體的調(diào)試方法同爬蟲(chóng)主體文件中的表達(dá)式語(yǔ)法一致。舉個(gè)栗子,如下圖所示。
將兩個(gè)Xpath表達(dá)式所對(duì)應(yīng)的選擇器放到scrapy shell調(diào)試的腳本下,我們可以很清楚的看到提取的目標(biāo)信息,而且省去了每次運(yùn)行Scrapy爬蟲(chóng)程序的重復(fù)步驟,提高了開(kāi)發(fā)效率。這種方式在Scrapy爬蟲(chóng)過(guò)程中十分常用,而且也十分的實(shí)用,希望小伙伴們都可以掌握,并且積極主動(dòng)的為自己所用。
關(guān)于Scrapy爬蟲(chóng)項(xiàng)目運(yùn)行和調(diào)試的部分小技巧先分享到這里,尤其是Debug調(diào)試和Scrapy shell調(diào)試極為常用,希望小伙伴們可以多多利用起來(lái),讓其為自己的項(xiàng)目服務(wù),可以事半功倍噢~~
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。 )