掃除執行Scrapy爬蟲程式的bug之後,現在便可以開始進行編寫爬蟲邏輯了。在正式開始爬蟲編寫之前,在這裡介紹四種小技巧,可以方便我們操縱和除錯爬蟲。
一、建立main.py檔案,直接在Pycharm下進行除錯
很多時候我們在使用Scrapy爬蟲框架的時候,如果想執行Scrapy爬蟲專案的話,一般都會想著去命令列中直接執行命令“scrapy crawl crawler_name”,其中crawler_name指的是爬蟲的名字,在一開始建立Scrapy爬蟲模板的時候就指定了的,而且在該爬蟲專案中具有唯一性。但是每次跑到命令列下去執行,看互動的結果,有時候並不是很清晰,所以這裡介紹一種方法,可以幫助大家提高開發效率,尤其是除錯的時候更是顯得方便。
在與爬蟲專案的scrapy.cfg檔案同級目錄下建立一個main.py檔案,用於控制整個爬蟲專案的執行。
在該資料夾中寫入的程式碼見下圖。其中execute函式是內嵌在scrapy中的,呼叫這個函式可以直接呼叫該Scrapy工程專案的爬蟲指令碼,這個函式的執行需要在爬蟲專案的父目錄下進行。而第7行程式碼的意思就是獲取當前py檔案的父目錄,省去我們直接複製路徑的精力和時間,同時也方便我們將該專案放到其他的平臺上去執行,不會報路徑的錯誤。execute函數里邊的引數其實就是將Scrapy爬蟲執行命令拆分,然後分別以一個字元的方式放到了一個數組中。
之後我們直接執行這個main.py檔案便可以呼叫Scrapy爬蟲程式了。
二、多用Debug進行除錯,提高開發速度
相信用過Pycharm的小夥伴都看到過Debug這個東東,它的英文意思就是“小蟲子”,在Pycharm中的logo也是個小蟲子,像是七星瓢蟲一樣,不過很多小夥伴可能還沒有怎麼用過,這裡簡單的介紹給大家,希望大家日後可以多多用到,對於專案的除錯十分有幫助。
之後爬蟲程式便開始進行除錯,並且會返回一系列結果,如下圖所示,可以方便的進行拖拽檢視。同時也會在爬蟲檔案中以綠色的字型進行顯示爬蟲的結果,很漂亮。
之後該爬蟲程式就會退出除錯,恢復正常的Pycharm介面,如下圖所示。
三、設定網站robots.txt規則為False
一般的,我們在運用Scrapy框架抓取資料之前,需要提前到settings.py檔案中,將“ROBOTSTXT_OBEY = True”改為ROBOTSTXT_OBEY = False。
在未改動之後settings.py檔案中預設爬蟲是遵守網站的robots.txt規則的,如下圖所示。
如果遵守robots.txt規則的話,那麼爬取的結果會自動過濾掉很多我們想要的目標資訊,因此有必要將該引數設定為False,如下圖所示。
設定好robots.txt規則之後,我們便可以抓到更多網頁的資訊。
四、利用Scrapy shell進行除錯
通常我們要執行Scrapy爬蟲程式的時候會在命令列中輸入“scrapy crawl crawler_name”,細心的小夥伴應該知道上篇文章中建立的main.py檔案也是可以提高除錯效率的,不過這兩種方法都是需要從頭到尾執行Scrapy爬蟲專案,每次都需要請求一次URL,效率十分低。執行過Scrapy爬蟲專案的小夥伴都知道Scrapy執行的時候相對較慢,有時候因為網速不穩定,根部就無法動彈。針對每次都需要執行Scrapy爬蟲的問題,這裡介紹Scrapy shell除錯方法給大家,可以事半功倍噢。
Scrapy給我們提供了一種shell模式,讓我們可以在shell指令碼之下獲取整個URL對應的網頁原始碼。在命令列中進行執行,其語法命令是“scrapy shell URL”,URL是指你需要抓取的網頁網址或者連結,如下圖所示。
該命令代表的意思是對該URL進行除錯,當命令執行之後,我們就已經獲取到了該URL所對應的網頁內容,之後我們就可以在該shell下進行除錯,再也不用每次都執行Scrapy爬蟲程式,發起URL請求了。
透過shell指令碼這種方式可以極大的提高除錯的效率,具體的除錯方法同爬蟲主體檔案中的表示式語法一致。舉個栗子,如下圖所示。
將兩個Xpath表示式所對應的選擇器放到scrapy shell除錯的指令碼下,我們可以很清楚的看到提取的目標資訊,而且省去了每次執行Scrapy爬蟲程式的重複步驟,提高了開發效率。這種方式在Scrapy爬蟲過程中十分常用,而且也十分的實用,希望小夥伴們都可以掌握,並且積極主動的為自己所用。
關於Scrapy爬蟲專案執行和除錯的部分小技巧先分享到這裡,尤其是Debug除錯和Scrapy shell除錯極為常用,希望小夥伴們可以多多利用起來,讓其為自己的專案服務,可以事半功倍噢~
原文連結:https://www.toutiao.com/i6684589023157027342/
原文連結:https://www.toutiao.com/i6679396332777505283/
掃除執行Scrapy爬蟲程式的bug之後,現在便可以開始進行編寫爬蟲邏輯了。在正式開始爬蟲編寫之前,在這裡介紹四種小技巧,可以方便我們操縱和除錯爬蟲。
一、建立main.py檔案,直接在Pycharm下進行除錯
很多時候我們在使用Scrapy爬蟲框架的時候,如果想執行Scrapy爬蟲專案的話,一般都會想著去命令列中直接執行命令“scrapy crawl crawler_name”,其中crawler_name指的是爬蟲的名字,在一開始建立Scrapy爬蟲模板的時候就指定了的,而且在該爬蟲專案中具有唯一性。但是每次跑到命令列下去執行,看互動的結果,有時候並不是很清晰,所以這裡介紹一種方法,可以幫助大家提高開發效率,尤其是除錯的時候更是顯得方便。
在與爬蟲專案的scrapy.cfg檔案同級目錄下建立一個main.py檔案,用於控制整個爬蟲專案的執行。
在該資料夾中寫入的程式碼見下圖。其中execute函式是內嵌在scrapy中的,呼叫這個函式可以直接呼叫該Scrapy工程專案的爬蟲指令碼,這個函式的執行需要在爬蟲專案的父目錄下進行。而第7行程式碼的意思就是獲取當前py檔案的父目錄,省去我們直接複製路徑的精力和時間,同時也方便我們將該專案放到其他的平臺上去執行,不會報路徑的錯誤。execute函數里邊的引數其實就是將Scrapy爬蟲執行命令拆分,然後分別以一個字元的方式放到了一個數組中。
之後我們直接執行這個main.py檔案便可以呼叫Scrapy爬蟲程式了。
二、多用Debug進行除錯,提高開發速度
相信用過Pycharm的小夥伴都看到過Debug這個東東,它的英文意思就是“小蟲子”,在Pycharm中的logo也是個小蟲子,像是七星瓢蟲一樣,不過很多小夥伴可能還沒有怎麼用過,這裡簡單的介紹給大家,希望大家日後可以多多用到,對於專案的除錯十分有幫助。
之後爬蟲程式便開始進行除錯,並且會返回一系列結果,如下圖所示,可以方便的進行拖拽檢視。同時也會在爬蟲檔案中以綠色的字型進行顯示爬蟲的結果,很漂亮。
之後該爬蟲程式就會退出除錯,恢復正常的Pycharm介面,如下圖所示。
三、設定網站robots.txt規則為False
一般的,我們在運用Scrapy框架抓取資料之前,需要提前到settings.py檔案中,將“ROBOTSTXT_OBEY = True”改為ROBOTSTXT_OBEY = False。
在未改動之後settings.py檔案中預設爬蟲是遵守網站的robots.txt規則的,如下圖所示。
如果遵守robots.txt規則的話,那麼爬取的結果會自動過濾掉很多我們想要的目標資訊,因此有必要將該引數設定為False,如下圖所示。
設定好robots.txt規則之後,我們便可以抓到更多網頁的資訊。
四、利用Scrapy shell進行除錯
通常我們要執行Scrapy爬蟲程式的時候會在命令列中輸入“scrapy crawl crawler_name”,細心的小夥伴應該知道上篇文章中建立的main.py檔案也是可以提高除錯效率的,不過這兩種方法都是需要從頭到尾執行Scrapy爬蟲專案,每次都需要請求一次URL,效率十分低。執行過Scrapy爬蟲專案的小夥伴都知道Scrapy執行的時候相對較慢,有時候因為網速不穩定,根部就無法動彈。針對每次都需要執行Scrapy爬蟲的問題,這裡介紹Scrapy shell除錯方法給大家,可以事半功倍噢。
Scrapy給我們提供了一種shell模式,讓我們可以在shell指令碼之下獲取整個URL對應的網頁原始碼。在命令列中進行執行,其語法命令是“scrapy shell URL”,URL是指你需要抓取的網頁網址或者連結,如下圖所示。
該命令代表的意思是對該URL進行除錯,當命令執行之後,我們就已經獲取到了該URL所對應的網頁內容,之後我們就可以在該shell下進行除錯,再也不用每次都執行Scrapy爬蟲程式,發起URL請求了。
透過shell指令碼這種方式可以極大的提高除錯的效率,具體的除錯方法同爬蟲主體檔案中的表示式語法一致。舉個栗子,如下圖所示。
將兩個Xpath表示式所對應的選擇器放到scrapy shell除錯的指令碼下,我們可以很清楚的看到提取的目標資訊,而且省去了每次執行Scrapy爬蟲程式的重複步驟,提高了開發效率。這種方式在Scrapy爬蟲過程中十分常用,而且也十分的實用,希望小夥伴們都可以掌握,並且積極主動的為自己所用。
關於Scrapy爬蟲專案執行和除錯的部分小技巧先分享到這裡,尤其是Debug除錯和Scrapy shell除錯極為常用,希望小夥伴們可以多多利用起來,讓其為自己的專案服務,可以事半功倍噢~
原文連結:https://www.toutiao.com/i6684589023157027342/
原文連結:https://www.toutiao.com/i6679396332777505283/