在使用 scrapy 來爬取網頁的時候,我們難免會使用到調試功能,下面介紹兩種調試方法:
1.終端使用
scrapy shell exampleurl
exampleurl 為你要爬取網站的 url 。
開啟調試界面后終端顯示如下(類似 IPython):
接下來就可以在命令行中輸入各種方法來獲取網頁內容查看實時效果了。如通過 response.css() 或 response.xpath() 方法來獲取網頁元素(如標題、文章內容等),實時打印顯示在命令行中進行調試。
按 ctr + z 退出調試。
2. 平時可能我們寫爬蟲代碼用 pycharm 比較多,如果能在 pycharm 實時調試再好不過。介紹一下在 pycharm 調試 scrapy 框架下的代碼。
在 scrapy 生成的爬蟲項目下新建一個 main.py 文件,寫入下列內容:
#!/usr/bin/env python #-*- coding:utf-8 -*-
from scrapy.cmdline import execute import os import sys #添加當前項目的絕對地址
sys.path.append(os.path.dirname(os.path.abspath(__file__))) #執行 scrapy 內置的函數方法execute, 使用 crawl 爬取並調試,最后一個參數jobbole 是我的爬蟲文件名
execute(['scrapy', 'crawl', 'jobbole'])
接下來在爬蟲文件中設置斷點,回到 main.py 文件中右鍵點擊 debug main.py 就可以進行調試了。
比如我自己的 jobbole.py 設置斷點后回到 main.py 進行 debug,會自動跳到設置斷點處:
按 F6會繼續執行斷點后的下一行代碼,按 F8會自動跳到該文件設置的下一個斷點處。
這里采用 eclipse 的按鍵布局,可以在偏好設置 keymap下更改:
PS:使用 scrapy 創建項目后生產的相同子文件名,因為 pycharm 不會將當前文件目錄自動加入自己的 sourse_path ,所以我們最好自己先手動導入:右鍵make_directory as-->sources path將當前工作的文件夾加入source_path。否則后續引入有些包可能 pycharm 會報錯。