OutLine
一般寫好一個 scrapy 項目,啟動方式大多會在命令行里執行:
scrapy crawl “spider-name” (后面有參數就跟參數)
但這么啟動不方便去斷點調試,不便於快速定位問題、解決問題。
So 記錄下自己在pycharm中斷點調試的過程。(下文中圖片可能看不清,點擊即可查看大圖)
配置Pycharm
既然想用pycharm斷點調試,理應把你的操作都框在pycharm里;
因為 `scrapy crawl 爬蟲name` 這種啟動方式本質上是走的你Python環境里scrapy庫(package)中cmdline.py
(Lib\site-packages\scrapy\cmdline.py)
現在要把這個啟動入口放在pycharm里啟動;
配置如下:
Step1
點擊:`Run->Edit Configurations`
Step2
增加一個 `python` 配置項目:
# Name:配置項目的名稱 # Script path:scrapy package中的cmdline.py文件路徑 # Parameters:啟動scrapy爬蟲所需參數(也就是傳參) # Python Interpreter:選擇所用的Python環境(我用的自己創建的anaconda虛擬環境,找cmdline.py文件時也是在虛擬環境中的site-packages找到,這點要注意) # Working directory:你scrapy爬蟲項目根目錄 其余的選項用默認的就行
Parameters 示例:
crawl dceDailyMarket -a curDay=2021-04-08 -a orchestraCallBack=notCallBack -a orchestraCallBackParam=notCallBack
這是我所用的參數(傳的參數),也即:crawl 爬蟲名字(代碼里的name變量對應的)-a 參數=參數值 -a 參數=參數值 -a 參數=參數值
配置好后點擊 ok ,你的pycharm右上方運行工具欄那里,就會有你剛配的這個啟動項;
Step3
在需要調試的代碼處加斷點,然后點擊debug按鈕;
代碼走到斷點處,就會停下來,然后就可以愉快的進行debug了~~
Step4
跨文件斷點調試
上面截圖,dceDailyMarket.py 是我的具體爬蟲代碼文件
代碼執行過程中會走 pipline.py 里的代碼,想看里面具體怎么走的?
只需要在 pipline.py 里對應處加斷點:
代碼中可能還會引用 toolUtils.py 中的方法
如果想 debug 里面的代碼,只需要在 toolUtils.py 里加斷點即可
這樣就可以實時看到想看的信息(變量、對象、報錯等……)
END
這樣一來,就可以像調試一份普通Python代碼那樣easy了。
便於快速定位問題、解決問題、提高效率、節省時間~
對了,還有一種方法,可以起到同樣效果:
from scrapy import cmdline cmdline.execute() # 感興趣的可以去了解下這種方式,我沒去具體操作