Scrapy爬虫框架教程(三)-- 调试(Debugging)Spiders

2023-10-27

摘要: 前言 春节放假在老家没有网,所以最近没有更新。这周加班闲暇抽空赶紧来更新一篇。我们在写爬虫的时候经常需要修改xapth规则来获取所需的数据,而Scrapy的爬虫通常是在命令行中启动的,我们怎么去调试呢?下面我就为大家介绍两种我常用的方法。

前言

春节放假在老家没有网,所以最近没有更新。这周加班闲暇抽空赶紧来更新一篇。我们在写爬虫的时候经常需要修改xapth规则来获取所需的数据,而Scrapy的爬虫通常是在命令行中启动的,我们怎么去调试呢?下面我就为大家介绍两种我常用的方法。

工具和环境

  1. 语言:python 2.7
  2. IDE: Pycharm
  3. 浏览器:Chrome
  4. 爬虫框架:Scrapy 1.2.1

正文

方法1

通过 scrapy.shell.inspect_response 函数来实现。以上一篇教程的爬虫为例:

 
     
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
     
# -*- coding: utf-8 -*-
# @Time : 2017/1/7 17:04
# @Author : woodenrobot
from scrapy  import Request
from scrapy.spiders  import Spider
from scrapyspider.items  import DoubanMovieItem
class DoubanMovieTop250Spider(Spider):
name =  'douban_movie_top250'
headers = {
'User-Agent''Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/'
'537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safar'
'i/537.36',
}
def start_requests(self):
url =  'https://movie.douban.com/top250'
yield Request(url, headers=self.headers)
def parse(self, response):
# 命令行调试代码
from scrapy.shell  import inspect_response
inspect_response(response, self)
item = DoubanMovieItem()
movies = response.xpath( '//ol[@class="grid_view"]/li')
for movie  in movies:
item[ 'ranking'] = movie.xpath(
'.//div[@class="pic"]/em/text()').extract()[ 0]
item[ 'movie_name'] = movie.xpath(
'.//div[@class="hd"]/a/span[1]/text()').extract()[ 0]
item[ 'score'] = movie.xpath(
'.//div[@class="star"]/span[@class="rating_num"]/text()'
).extract()[ 0]
item[ 'score_num'] = movie.xpath(
'.//div[@class="star"]/span/text()').re( ur'(\d+)人评价')[ 0]
yield item
next_url = response.xpath( '//span[@class="next"]/a/@href').extract()
if next_url:
next_url =  'https://movie.douban.com/top250' + next_url[ 0]
yield Request(next_url, headers=self.headers)

我们在下载完网页源码进行解析前可以插入上述两句代码,在命令行运行爬虫出现以下效果:

此时我们就可以在命令行中使用xpath规则对response进行操作提取相应的信息:

有时候下载下来的网页结构和浏览器中看到的不一样,我们可以利用view(response)将爬虫下载到的网页源码在浏览器中打开:

在命令行输入view(response)后默认浏览器会自动打开下载到的网页源码。

虽然scrapy自己提供了这个方式让我们调试自己的爬虫,但是这个方式有很大的局限性。如果能利用pycharm的Debug功能进行调试就太好了。下面我就为大家介绍这么用pycharm调试自己的爬虫。

方法2

首先在setting.py同级目录下创建run.py文件。

写入以下代码:

 
     
1
2
3
4
5
6
7
8
9
10
11
 
     
# -*- coding: utf-8 -*-
# @Time : 2017/1/1 17:51
# @Author : woodenrobot
from scrapy  import cmdline
name =  'douban_movie_top250'
cmd =  'scrapy crawl {0}'.format(name)
cmdline.execute(cmd.split())

其中name参数为spider的name。
接着在spider文件中设置断点。

返回run.py文件中右键选择Debug。

最后程序就会在断点处暂停,我们就可以查看相应的内容从而进行调试

结语

两种方法适合不同的场景,不过一般情况下肯定是方法2好用。: )

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scrapy爬虫框架教程(三)-- 调试(Debugging)Spiders 的相关文章

  • 如何关闭防火墙、windows defender的设置不可用。该应用已从服务器中卸载

    一 windows defender的设置不可用 该应用已从服务器中卸载 操作系统可能是gho镜像做的 被精简了 开始 运行 CMD 输入gpedit msc 回车 如果失败 先进行第二步在返回来进行第一步 二 1 在管理员bai命令提示d
  • 神经网络及其matlab仿真

    本文进行了神经网络原理简介 并对蜢虫分类问题进行了matlab仿真 一 神经网络介绍 神经网络是由具有适应性的简单单元组成的广泛并行互联的网络 它的组织能够模拟生物神经系统对真实世界物体作出的交互反应 神经网络中最基本的成分是神经元 neu
  • mysql 减法,mysql 减法

    SQL codemysql gt desc t a175460677 Field Type Null Key Default Extra uName char 3 YES NULL money float 10 2 YES NULL

随机推荐

  • Arduino平衡小车

    Arduino平衡小车 1 概述 此Arduino平衡小车在主控方面由Arduino UNO R3和Arduino sensor shield v5 0传感器扩展板组成 采用TB6612FNG作为电源和电机之间的中介给带编码器的直流电机供电
  • Nacos鉴权和配置加密

    nacos存在可以任意用户添加的问题 更改提交方式为POST 访问 nacos v1 auth users test111username test111 password 123456 新建一个账号test111 可以看到创建用户成功 如
  • STM32读写内部Flash(介绍+附代码)

    概述 内部Flash读写详解 一 介绍 首先我们需要了解一个内存映射 stm32的flash地址起始于0x0800 0000 结束地址是0x0800 0000加上芯片实际的flash大小 不同的芯片flash大小不同 RAM起始地址是0x2
  • SMTP:防止追踪发件人IP

    1 使用网页版gmail发信 邮件头不带X Originating IP 2 javamail调用SMTP时加代理 props put mail smtp socks host 10 11 22 2 props put mail smtp
  • 背包

    01背包 问题描述 有N件物品和一个容量为V的背包 第i件物品的体积是weight i 价值是value i 求解将哪些物品装入背包可使价值总和最大 实现代码 include
  • Java-查看运行时对象占用内存

    Java 查看运行时对象占用内存 一 查看项目运行时的进程ID jps 二 导出运行信息到二进制文件中 选择想要查看程序的进程ID 例如 jmap dump format b file heap bin 20772 不能在系统目录中创建 会
  • STM32单片机蓝牙-APP全自动洗衣机水位检测洗涤脱水排水

    实践制作DIY GC0164 蓝牙 APP全自动洗衣机水位检测 基于STM32单片机设计 蓝牙 APP全自动洗衣机水位检测 二 功能介绍 硬件组成 STM32F103C单片机最小系统 LCD1602显示器 1个5V直流电机 低速洗衣高速脱水
  • NC portal保存只能获取当前子表选中行的数据集问题

    保存是获取子表数据只能获取到当前选中的行 代码如下 LfwViewmain LfwRuntimeEnvironment getWebContext getPageMeta getView main Dataset bodyds main g
  • mysql回收用户权限

    1 创建test1用户 select password test1 password test1 06C0BF5B64ECE2F648B5F048A71903906BA08E5C create user test1 localhost id
  • 设计模式--策略模式

    策略模式 属于行为型模式基本原理 一个类的行为或其算法可以在运行时更改主要流程 1 创建策略基类 并根据不同行为实例化不同的策略类 2 使用时选择合适的策略类注意 如果一个系统的策略太多最好考虑其他模式 include
  • Python绘制柱状图并美化

    python绘图合集 往期绘图合集 python绘制简单的折线图 python读取excel中数据并绘制多子图多组图在一张画布上 python绘制带误差棒的柱状图 python绘制多子图并单独显示 python读取excel数据并绘制多y轴
  • ICLR2021

    USING LATENT SPACE REGRESSION TO ANALYZE AND LEVERAGE COMPOSITIONALITY IN GANS 作者 Lucy Chai Jonas Wulff Phillip Isola 单位
  • 电容数据手册阅读

    SCOPE 该说明书描述介绍了什么 APPLICATIONS 电容的应用范围 FEATURES 电容的特点 ORDERING INFORMATION GLOBAL PART NUMBER PHYCOMP CTC 12NC 订货信息 全球零件
  • Ubuntu nginx C compiler cc is not found

    二 遇到的问题 1 问题内容 checking for C compiler found but is not working configure error C compiler gcc is not found 2 原因分析 confi
  • js数组循环的一种算法

    数组循环的一种算法
  • 计算机网络知识思维导图

    网络体系结构 交换技术 传输层协议 数据链路层
  • 关于Findbugs的一些常见报错的翻译和处理方式

    在Lab5中要求使用 CheckStyle 和 FindBugs 工具对经过人工走查的 Lab4 代码进行自动的静态代码分析 在使用FindBugs的过程中 出现了一些难以理解的报错 经查阅资料 了解了错误的原因以及一些大致的解决办法 下面
  • Olya and Energy Drinks【Codeforces 877D】【BFS+思维+剪枝】

    Codeforces Round 442 Div 2 D 这天给学弟学妹们出了这道题 没想到背锅了 感觉要0A了 QAQ 确实 今天我再次写的时候也WA了好几发 哎 这锅背了 看到有些的代码code 访问过的点都标记为mp x y 但是这样
  • Vue常用技巧收录

    1 删除数组索引 在数组中删除一项标准做法是用 Array splice index 1 del index this arr splice index 1 Vue js2 2 0 版本中 可以直接使用Vue delete del inde
  • Scrapy爬虫框架教程(三)-- 调试(Debugging)Spiders

    摘要 前言 春节放假在老家没有网 所以最近没有更新 这周加班闲暇抽空赶紧来更新一篇 我们在写爬虫的时候经常需要修改xapth规则来获取所需的数据 而Scrapy的爬虫通常是在命令行中启动的 我们怎么去调试呢 下面我就为大家介绍两种我常用的方