scrapy入门实战练习(二)----调试(Debugging)Spiders

四、Spyder 下使用 Scrapy 开发爬虫之腾讯视频抓取 上一篇文章简单配置了一下 Spyder 工具窗口,现在开始进入开发阶段。我也是刚开始学习,难免出现笔误和理解不当的地方,欢迎指正:)。我目前主要的学习资源是 Scrapy 官方文档 以及 百度,个人比较喜欢去官网,虽然全英文,学习起来比起看别人的中文博客要慢很多,但是毕竟官网上给出的解决方案都是保持更新的,现在的很多博客都是一两年前的文章,随着版本跟新很多方案可能不再适用,所以我一边学习,一边更新... 阅读详情

转自知乎网



工具和环境

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

正文

方法1

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

# -*- 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文件。


写入以下代码:

# -*- 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好用。


Python爬虫,猫眼网站(可进行二次请求) 猫眼网站 一、 项目要求 (1)保存100部电影的信息,排名,电影名称,演员,上映时间,评分 (2)抓取猫眼网站数据并保存到mysql数据库,存储xml,execl文件并统计排分 (3)点击任意一个电影,爬取跳转网页上的介绍、演职人员,奖项,图集信息,并且保存到本地 (4)统计演员演的电影数目,最后以图表形式输出 二、 分析目标网站结构 目标网址:https://maoyan.com/board/4 1)通过观察网页结构,发现一页只出现十部电影,每次翻页就会改变请求网页里面的offset值 https://maoyan.com/board/4?offset=0 https://maoyan 立即下载

相关推荐

RT-Thread 5.1.0 实战:手把手教你用CubeMX和RT-Studio创建第一个工程(附常见编译错误修复)

本文详细介绍了如何使用STM32CubeMX和RT-Thread Studio 5.1.0创建第一个RT-Thread工程,包括开发环境准备、CubeMX配置、工程整合及常见编译错误修复。通过实战指南,帮助开发者快速上手RT-Thread 5.1.0,解决开发过程中的典型问题,提升嵌入式开发效率。

weixin_29165465的博客 287

Python爬虫学习笔记(十二)————scrapy案例

(2) yield 是一个类似 return 的关键字,迭代一次遇到yield时就返回yield后面(右边)的值。重点是:下一次迭代 时,从上一次迭代遇到的yield后面的代码(下一行)开始执行。(3)简要理解:yield就是 return 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后(下一行)开始。(1)带有 yield 的函数不再是一个普通函数,而是一个生成器generator,可用于迭代。(6) pipelines.py文件。(2)__init__.py文件。(3)dang.py文件。

laosao_66的博客 1851

解决Windows 10安装语言包时遇到的0x800F0954错误

在安装Windows 10操作系统的语言包时,如果遇到错误代码0x800F0954的提示,这无疑会让许多用户感到困惑和无助。这个错误通常意味着在安装过程中遇到了一些阻碍,导致无法正常完成语言包的安装。本文将为大家详细解析这个错误代码0x800F0954,并提供一系列有效的解决方法,帮助大家顺利安装所需的语言包。

nntxthml的博客 3794

在pycharm里面调试scrapy

2, 在项目运行的“编辑配置”里面添加一个Python配置。任意取名,关键是在script栏填上刚刚创建的文件路径,还有在工作目录填上scrapy的项目目录即可。1,在scrapy项目中,和scrapy.cfg同目录里创建一个自己命名的py文件,写上这两行代码,其中爬虫名字自己更换。

u012970678的博客 467

Python 映射函数map()详解

Python 映射函数map()详解

分享我的点点滴滴,在成长路上与你同行! 2141

三角洲自动购买工具 —— 基于 OCR 的价格识别与自动点击

通过的方式,我们可以轻松实现自动化的“价格监控 + 自动点击”工具。它的优势在于通用性—— 只要能截屏识别价格,就能用于任何程序,不依赖特定 API。未来可以扩展的功能:自动保存配置到文件。支持多价格区域检测。增加快捷键启停功能。

qq_62975494的博客 2422

scrapy的应用

# This package will contain the spiders of your Scrapy project # # Please refer to the documentation for information on how to create and manage # your spiders. from scrapy.spider import BaseS

zqckzqck的专栏 829

Unity 热更 之 【HybirdCLR】+【YooAsset】 [安卓 Android端] [代码 + 资源热更] 功能的 简单实现演示

Unity热更有很多方案,各种lua热更,ILRuntime等,这里介绍的是YooAsset+HybridCLR的热更方案,HybridCLR负责更新c#代码,YooAsset负责更新资源。HybridCLR是一种创新的解决方案,专为 Unity 游戏开发中的热更新需求设计。它通过结合解释执行和 Ahead-of-Time (AOT) 编译技术,为跨平台的游戏开发提供了一种高效的热更新机制。原生C#热更新体验,开发工作流与传统Unity C#开发几乎相同,零学习和使用成本。

仙魁XAN 3866

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

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

weixin_33858485的博客 275

实干派!网易易盾增强版滑块验证码,全方位讲解识别思路(含源码)

该验证码是异形滑块验证码中的一种,缺口旋转+偏移的处理需要你有很好的图像处理知识,能很好的处理透明通道,同时,该验证码需要你能很好的处理缺口和背景之间匹配的关系,该验证码的处理难点就是两个缺口之间如何找到正确的,两个检测框都有很强的相似度,且加上背景图的干扰,在图像处理和有优化上难度大大增加。

码王吴彦祖的博客 2016

rk3568 修改开机动画

bootanimation.zip是一个Android设备启动时播放的动画文件,它包含了一系列的图片和描述文件,用于描述动画的播放顺序和持续时间。

weixin_35723192的博客 2730

Scrapy爬虫调试

1、创建run.py文件,和setting.py同级目录2、添加代码:from scrapy import cmdlinename = 'pythonPosition'cmd = 'scrapy crawl {0}'.format(name)cmdline.execute(cmd.split())其中name参数为spider的name。3、接着在spider文件中设置断点。4、run.py文件中...

Kwoky的博客 2934

挂载(Mount)是什么意思

挂载 = 把一个存储设备或文件系统“接入”到现有的目录树,使其内容能够被访问。

天赐好车的博客 290

Scrapy- 调试(Debugging)Spiders

考虑下面的 spider: import scrapy from myproject.items import MyItem class MySpider(scrapy.Spider): name = 'myspider' start_urls = ( 'http://example.com/page1', 'http://example.co...

eli的博客 362

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Scrapy : Telnet Console,Debugging Spiders

Scrapy : Telnet Console,Debugging Spiders

AI路漫漫 731

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

爬虫教程( 2 ) --- scrapy 教程、可视化管理工具、反爬框架、ai 爬虫

scrapy 教程、可视化管理工具、反爬框架、ai 爬虫

freeking101的博客 5261

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

scrapling 官网教程

选择使用方法查找元素访问元素的数据Navigation 导航抓取网站内容HTTP 请求动态加载的网站动态加载,并且有防护的网站。

freeking101的博客 1115

spyder断点调试

1,配置环境变量,否则断点过程中无法观察到变量,如下配置后如果还是看不到变量,建议重启spyder 2,行号左侧双击打断点,菜单功能如下图所示:

醉糊涂仙的博客 7351

爬虫记(二) - Idea安装Scrapy & Scrapy入门

我用Intellij IDEA写Python脚本,IDEA装上Python插件之后跟PyCharm差不多。 安装Scrapy 链接 Pycharm中的scrapy安装教程 - xiaoli2018 - 博客园 步骤 * 打开IDEA的settings->Plugins,点击,搜索并安装Python插件 * 新建Python项目 * 执行方法一或方法二 * 记住scrapy.ex...

一个幽灵 3877

Scrapy爬虫(九):scrapy的调试技巧

Scrapy爬虫(九):scrapy调试技巧Scrapy爬虫九scrapy调试技巧 scrapy的调试 浏览器调试 scrapy命令调试 本章将介绍scrapy的一些调试技巧。 scrapy的调试在开发爬虫时调试工作是必要的且重要的,无论是开发前的准备工作,比如测试该网站在scrapy爬虫中是否可用;或者是下载时的伪装工作,比如为爬虫设置请求参数模拟浏览器;亦或是在解析下载下来的数据,比如如何使

李燕西的博客 1万+

Python爬虫————scrapy的使用

1、什么是scrapy scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取的爬虫框架,用于抓取web站点并从页面中提取结构化的数据。 2、Scrapy的安装 也可以通过Anaconda安装可避免以上的坑 3、常用的基本命令 建立一个scrapy工程: scrapy startproject pro 进入工程目录建立一个scrapy爬虫: cd p...

Jorocco的博客 1071

python scrapy 爬虫实例_scrapy爬虫完整实例

本文主要通过实例介绍了scrapy框架的使用,分享了两个例子,爬豆瓣文本例程 douban 和图片例程 douban_imgs ,具体如下。例程1: douban目录树douban--douban--spiders--__init__.py--bookspider.py--douban_comment_spider.py--doumailspider.py--__init__.py--items....

weixin_39600331的博客 2422

爬虫(九)--scrapy框架

一、scrapy框架 (一)安装 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scrapy (二)步骤 1.创建项目 2.配置 不遵循robot协议 请求头 3.编写想要获取的url,并测试 启动命令 scrapy crawl maoyan --nolog 4.设置想要提取的字段 5.实例化item对象 6....

一个非常正经的人的博客 719

Python 如何快速启动scrapy,怎么打断点调试scrapy代码,在pycharm中可视化了

如何在scrapy中简单调试自己的代码,在pycharm中可视化了 详细见图 这上面就加了一个文件 # -*- coding:utf-8 -*- from scrapy import cmdline cmdline.execute(("scrapy crawl zhengfu").split()) 就这么简单, 就只需要在这个文件 加个 cmdline 这个包, 就等同于在黑窗口上面写的 scrapy crawl zhengfu 。 ...

weixin_44532999的博客 1364
上一篇: 安装pywin32出现--Python version 3.3 required, which was not found in the registry
下一篇: scrapy入门实战练习(三)----抓取AJAX异步加载网页
exec1025
博客等级 码龄9年 15粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值