在使用 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 会报错。

scrapy 调试功能的更多相关文章

  1. Intellij IDEA调试功能使用总结

    Intellij IDEA调试功能使用总结 这段时间一直在使用Intellij IDEA, 今天把调试区工具的使用方法记录于此. 先编译好要调试的程序. 1.设置断点 选定要设置断点的代码行,在行号的 ...

  2. vs2012远程调试功能的改进

    不知道大家有没有遇到过这种情况,刚开发完的程序,明明在本机能够好好的运行,可是部署到服务器过分发给用户时,总是出现莫名其妙的错误. 一时半会又看不出问题来,怎么办呢?难道只能在服务器或是客户电脑上装一 ...

  3. Android Studio调试功能使用总结【转】

    Android Studio调试功能使用总结[转]   这段时间一直在使用Intellij IDEA, 今天把调试区工具的使用方法记录于此. 先编译好要调试的程序. 1.设置断点 选定要设置断点的代码 ...

  4. CodeBlocks的汉化、主题美化及其调试功能的实现

    破事水 最近由于Cfree5经常崩溃+调试语句运行速度比较慢,想尝试一下另一个听说很好用的IDE Code::Blocks. 先上官网的安装包(自带mingw,安装完可以直接用,适用于windows系 ...

  5. [转载]Unity3D的断点调试功能

    断点调试功能可谓是程序员必备的功能了.Unity3D支持编写js和c#脚本,但很多人可能不知道,其实Unity3D也能对程序进行断点调试的.不过这个断点调试功能只限于使用Unity3D自带的MonoD ...

  6. VC使用CRT调试功能来检测内存泄漏

    信息来源:csdn     C/C++ 编程语言的最强大功能之一便是其动态分配和释放内存,但是中国有句古话:“最大的长处也可能成为最大的弱点”,那么 C/C++ 应用程序正好印证了这句话.在 C/C+ ...

  7. KDB支持单步调试功能(ARM架构)

    0    实践发现KDB不支持step调试功能 (本文针对的是arm CotexA9架构,各种架构的实现方式不一样,    X86的好像已经支持,不过本人没有验证过) 1    首先看下要调试的代码段 ...

  8. Python开发环境Wing IDE使用教程:部分调试功能介绍

    下面是用户应该了解的Wing IDE的其它一些调试功能: Main Debug File—用户可以指定项目中的一个文件作为调试的主入口点.当完成这个设置之后,调试总是从这个文件开始,除非用户使用Deb ...

  9. 在ubuntu下把php的网页调试功能打开

    我这儿的环境是 Ubuntu 14.04  + Lighttpd + PHP5.5 默认情况下php的网页调试功能是不打开的,当PHP解析到一个错误的语法时会直接输出为空白. 我在网上找一许多文章,说 ...

随机推荐

  1. 03-CSS中的选择器

    高级选择器分为: 后代选择器 子代选择器 并集选择器 交集选择器 后代选择器 使用空格表示后代选择器 , 顾名思义  父元素的后代(包括儿子,孙子,重孙子) 中间空格隔开 是后代 .container ...

  2. mysql忘记root密码的处理方法

    在linux下,如果忘记了mysql中root用户的密码可以采用以下办法解决. 1. 修改my.cnf,加入skip-grant-tables 修改mysql的配置文件my.cnf,在[mysqld] ...

  3. Java面向对象-递归

    Java面向对象-递归 递归,就是程序调用自身,我们讲的是方法递归调用,也就是在方法里自己调用自己: 我们给出一个案例,求阶乘  1*2*3*...*(n-1)*n 我们用非递归和递归方式分别实现下, ...

  4. IOS证书申请 PPF provisioning profile Developer Certificate

    [Error] No provisioning profile found for the selected build configuration 新来一个iPhone,真机调试的时候报错. 1.x ...

  5. windows命令行 查询/kill 进程

    查询: tasklist kill对应进程 按名称:taskkill /im xxx.exe 按pid: taskill /pid pid kill掉xxx进程的相关进程(子进程) taskkill ...

  6. errant-transactions

    https://www.percona.com/blog/2015/12/02/gtid-failover-with-mysqlslavetrx-fix-errant-transactions/ 使用 ...

  7. Sprite Editor

    [Sprite Editor] 在Unity3D中,一个图片可以有多种类型(如下图).对于2D游戏开发,最常用的类型就是Sprite. 下图是Sprite Texture的属性,Packing Tag ...

  8. 使用GDB调试PHP代码,解决PHP代码死循环

    最近在帮同事解决Swoole Server问题时,发现有1个worker进程一直处于R的状态,而且CPU耗时非常高.初步断定是PHP代码中发生死循环. 下面通过一段代码展示如何解决PHP死循环问题. ...

  9. Codeforces 1153D 树形DP

    题意:有一个游戏,规则如下:每个点有一个标号,为max或min, max是指这个点的值是所有子节点中值最大的那一个,min同理.问如何给这颗树的叶子节点赋值,可以让这棵树的根节点值最大. 思路:很明显 ...

  10. 3.Dynamic Layout 动态布局。在槽中处理布局

    在应用程序中,一个界面的布局基本都是固定的. 在这个实例中,我们把管理布局的代码放在槽中.这样点击一次按钮,触发槽.布局改变一次.这样就成为一个动态布局. (一) 水平和竖直布局改变 横向: 纵向: ...