scrapy的深入使用:

2023-10-29

1.区分正常的debug和scrapy中的debug

2.scrapy shell的使用

scrapy shell是scrapy提供的一个终端工具,能够通过它查看scrapy中对象的属性和方法,以及测试xpath

使用方法:

scrapy shell https://www.sixstaredu.com/course/explore

在终端输入上述命令后,能够进入python的交互式终端,此时可以使用:

response.xpath():直接测试xpath规则是否正确

response.url:当前响应的url地址

response.request.url:当前响应对应的请求的url地址

response.headers:响应头

response.body:响应体,也就是html代码,默认是byte类型r

esponse.requests.headers:当前响应的请求头

3.settings设置

3.1 为什么项目中需要配置文件

在配置文件中存放一些公共变量,在后续的项目中方便修改,如:本地测试数据库和部署服务器的数据库不一致

3.2 配置文件中的变量使用方法

  1. 变量名一般全部大写
  2. 导入即可使用

3.3 settings.py中的重点字段和含义

USER_AGENT 设置ua

ROBOTSTXT_OBEY 是否遵守robots协议,默认是遵守

CONCURRENT_REQUESTS 设置并发请求的数量,默认是16个

DOWNLOAD_DELAY 下载延迟,默认无延迟

COOKIES_ENABLED 是否开启cookie,即每次请求带上前一次的cookie,默认是开启的

DEFAULT_REQUEST_HEADERS 设置默认请求头,这里加入了USER_AGENT将不起作用

SPIDER_MIDDLEWARES 爬虫中间件,设置过程和管道相同

DOWNLOADER_MIDDLEWARES 下载中间件

LOG_LEVEL 控制终端输出信息的log级别,终端默认显示的是debug级别的log信息

LOG_LEVEL = "WARNING"

LOG_FILE 设置log日志文件的保存路径,如果设置该参数,终端将不再显示信息

LOG_FILE = "./test.log"

4.pipeline的深入使用

4.1 pipeline中常用的方法:

  1. process_item(self,item,spider):实现对item数据的处理
  2. open_spider(self, spider): 在爬虫开启的时候仅执行一次
  3. close_spider(self, spider): 在爬虫关闭的时候仅执行一次

4.2 管道文件的修改

在pipelines.py代码中完善

import json
from pymongo import MongoClient

class SixstarFilePipeline(object):
    def open_spider(self, spider):  # 在爬虫开启的时候仅执行一次
        if spider.name == 'Sixstar':
            self.f = open('json.txt', 'a', encoding='utf-8')

    def close_spider(self, spider):  # 在爬虫关闭的时候仅执行一次
        if spider.name == 'Sixstar':
            self.f.close()

    def process_item(self, item, spider):
        if spider.name == 'Sixstar':
            self.f.write(json.dumps(dict(item), ensure_ascii=False, indent=2) + ',\n')
        return item  # 不return的情况下,另一个权重较低的pipeline将不会获得item

class SixstarMongoPipeline(object):
    def open_spider(self, spider):  # 在爬虫开启的时候仅执行一次
        if spider.name == 'Sixstar':
            con = MongoClient(host='127.0.0.1', port=27017) # 实例化mongoclient
            self.collection = con.Sixstar.teachers # 创建数据库名为Sixstar,集合名为teachers的集合操作对象

    def process_item(self, item, spider):
        if spider.name == 'Sixstar':
            self.collection.insert(dict(item)) # 此时item对象需要先转换为字典,再插入
        # 不return的情况下,另一个权重较低的pipeline将不会获得item
        return item

注意:

  1. 不同的pipeline可以处理不同爬虫的数据,通过spider.name属性来区分
  2. 不同的pipeline能够对一个或多个爬虫进行不同的数据处理的操作,比如一个进行数据清洗,一个进行数据的保存
  3. 同一个管道类也可以处理不同爬虫的数据,通过spider.name属性来区分

4.4 pipeline使用注意点

  1. 使用之前需要在settings中开启
  2. pipeline在setting中键表示位置(即pipeline在项目中的位置可以自定义),值表示距离引擎的远近,越近数据会越先经过
  3. 有多个pipeline的时候,process_item的方法必须return item,否则后一个pipeline取到的数据为None值
  4. pipeline中process_item的方法必须有,否则item没有办法接受和处理
  5. process_item方法接受item和spider,其中spider表示当前传递item过来的spider
  6. open_spider(spider) :能够在爬虫开启的时候执行一次
  7. close_spider(spider) :能够在爬虫关闭的时候执行一次
  8. 上述俩个方法经常用于爬虫和数据库的交互,在爬虫开启的时候建立和数据库的连接,在爬虫关闭的时候断开和数据库的连接
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

scrapy的深入使用: 的相关文章

随机推荐

  • List1_Excise

    List和Set集合的上层接口是 A java util Map B java util Collection C java util List D java util Set ArrayList类的底层数据结构是 A A 数组结构 B 链
  • 输入函数input

    目录 函数介绍 基本使用 返回值类型转换 函数介绍 作用 接收来自用户的输入 返回值类型 同输入值类型 即str 值的存储 使用赋值符号 即对输入值进行存储 基本使用 变量 input 输入的提示语 name input 你的名字是什么 p
  • Node.js开发框架Express.js做一个简单的Web应用以及代码详解

    目录 Express js的主要特性 搭建 Node js 开发环境 Express js的使用方法 端口和URL的定义和作用 Express js的应用场景 注意 后续技术分享 第一时间更新 以及更多更及时的技术资讯和学习技术资料 将在公
  • [Python人工智能] 十二.循环神经网络RNN和LSTM原理详解及TensorFlow编写RNN分类案例

    从本专栏开始 作者正式开始研究Python深度学习 神经网络及人工智能相关知识 前一篇讲解了TensorFlow如何保存变量和神经网络参数 通过Saver保存神经网络 再通过Restore调用训练好的神经网络 本文将详细讲解循环神经网络RN
  • 开源Go语言数值算法库 An open numerical library purely based on Go programming language

    目录 关于 goNum https github com chfenger goNum 安装环境 安装方法 算法 许可证书 致谢 关于goNum goNum是一款完全以Go语言为基础的开源数值算法库 它可以使你像调用其它go函数一样使用其进
  • 使用CSS实现国际象棋棋盘

    系列文章目录 CSS3实现半透明边框 1 CSS3实现多重边框 2 CSS3如何调整背景图片大小 3 CSS3背景定位 4 CSS3设置条纹背景 5 使用CSS实现国际象棋棋盘 系列文章目录 前言 一 直角三角形 拼成正方形 二 使用步骤
  • c++:异常处理机制

    什么是异常 1 异常是一种程序控制机制 与函数机制独立和互补 函数是一种以栈结构展开的上下函数衔接的程序控制系统 而异常是另一种控制结构 它依附于栈结构 却可以同时设置多 个异常类型作为网捕条件 从而以类型匹配在栈机制中跳跃回馈 异常的设计
  • 用栈实现算数表达式求值(C语言(基础版))

    要求 输入以 为结束的算数表达式 包括 并求值 1 基础的栈结构书写 包括创建栈 判断栈是否为空 以及数据的压栈和出栈 可参考MOOC上陈越姥姥的相关数据结构课程 include
  • 红帽认证-RHCE

    目录 RHCE认证考的是 ansible的内容 重要信息配置 一 安装和配置Ansible 二 创建和运行Ansible 临时命命 三 安装软件包 四 使用RHEL系统角色 五 使用Ansible Galaxy 安装角色 六 创建使用角色
  • PostgreSQL解锁表

    PostgreSQL解锁表 一 查看单表加锁情况 二 取消一个长时间执行的sql 2 1 终止查询 但是连接留在原地 2 2 终止查询 同时杀死连接 三 查看锁表的详细信息 一 查看单表加锁情况 SELECT relation regcla
  • 转眼已走在成为程序猿的路上

    考完研 没有回家 直接找地方实习 虽不是太累可还是不能和上学相比 宿舍只剩孤身一人 转眼四年 加油吧 梦在前方
  • Pytorch raise NotImplementedError NotImplementedError

    我以为是我的网络搭建出错 结果竟是输入格式出错 如果出现这个问题 一般是forward这块出错 我是拼写出错 是forward 修改过后正常 还有可能是tap缩进的时候出错 def没有对齐 如果报错 可以先查查格式
  • 网络安全的基础知识

    1 什么是防火墙 什么是堡垒主机 什么是DMZ 防火墙是在两个网络之间强制实施访问控制策略的一个系统或一组系统 堡垒主机是一种配置了安全防范措施的网络上的计算机 堡垒主机为网络之间的通信提供了一个阻塞点 也可以说 如果没有堡垒主机 网络间将
  • kafka接收消费消息

    三 kafka接收消费消息 本节教程在window下演示 如果是在linux上学习的同学 可以将命令的前缀进行替换即可 比如 window 下的 命令前缀 bin windows kafka topics bat 则linux下的命令前缀为
  • 2023 年你应该知道的 10 个开源项目

    精心策划的 2023 年 GitHub 上最有趣的开发工具和项目列表 1 NetBeans NetBeans 是一个开源的集成开发环境 因其支持多种编程语言和平台而受到开发人员的欢迎 动图 2 OpenCV OpenCV 是一个用于图像和视
  • latex 矩阵_数学作业小工具 MATLAB 到 LaTex

    代码总是能解放生产力 在做数学作业的时候会发现用Word LaTex写矩阵感觉麻烦 同时有时也会因为各种各样的原因写错或者看错 所以我写了一个简单的小脚本可以把MATLAB里的矩阵变成LaTeX代码 直接放到Word或者LaTex编辑器就可
  • Spring Boot 是什么,有什么用。

    见 http www csdn net article a 2016 05 12 15838098 maven Java web bootstrap dataTable app开发QQ群 566862629 希望更多人一起帮助我学习 首先
  • 计算机视觉二 局部图像描述子 SIFT算法

    目录 一 SIFT算法 1 基本介绍 SIFT算法可以解决的问题 2 相关概念 1 尺度空间理论 2 高斯模糊 3 高斯金字塔 4 关键点检测 DOG 5 关键点方向分配 6 关键点描述 7 关键点匹配 二 STFL算法的实现 1 SIFT
  • MATLAB算法实战应用案例精讲-【数据分析】时序异常检测(附实战应用案例)

    目录 前言 算法原理 算法思想 时序异常检测方法 1 统计方法 2 预测方法 机器学习 lt
  • scrapy的深入使用:

    1 区分正常的debug和scrapy中的debug 2 scrapy shell的使用 scrapy shell是scrapy提供的一个终端工具 能够通过它查看scrapy中对象的属性和方法 以及测试xpath 使用方法 scrapy s