Python爬虫从入门到精通:(27)scrapy框架04_scrapy数据解析_Python涛哥

2023-11-08

scrapy数据解析

这节课,我们来看下scrapy中的数据解析

创建工程

爬取内容:爬取段子网中的段子:https://duanzixing.com/段子/

回顾上节课所学的知识(创建scrapy),我们先来创建工程和爬虫文件:

1.scrapy startproject duanziPro
2.cd duanziPro
3.scrapy genspider duanzi www.xxx.com

创建好后,我们要不要忘记以下2点:

  • 修改下settings.py文件中的配置

    • 修改 ROBOTSTXT_OBEY = False

    • 增加 LOG_LEVEL = 'ERROR'

    • 取消 USER_AGENT的注释并设置为自己的UA

      在这里插入图片描述

  • 注释掉爬虫文件里的 :allowed_domains = ['www.xxx.com']

    在这里插入图片描述

    设置好后,我们来爬取下这个网站:

    import scrapy
    
    
    class DuanziSpider(scrapy.Spider):
        name = 'duanzi'
        # allowed_domains = ['www.xxx.com']
        start_urls = ['https://duanzixing.com/段子/']
    
        def parse(self, response):
            print(response)
    

结果是可以正常爬取的。那么我们怎么进行数据解析呢?

肯定是在parse函数中写解析代码,这里我们可以用xpath进行数据解析


使用xpath进行数据解析

跟我们之前的xpath语法差不多,我们直接分析:

网站源码很简单,我们很容易就定位到了文本内容。
在这里插入图片描述

直接右键复制xpath,利用之前所学的知识进行解析:

def parse(self, response):
    article_list = response.xpath('/html/body/section/div/div/article')
    for article in article_list:
        title = article.xpath('./header/h2/a/@title')[0]
        note = article.xpath('./p[2]/text()')[0]
        print(title,note)

执行scrapy crawl duanzi

在这里插入图片描述

我们发现,爬取是爬去成功了,但解析出来的内容不是字符串数据,说明和etree中的xpath使用方式不同

在scrapy中,xpath返回的列表中存储而是Selector对象,其实我们想要的字符串数据被存储在了该对象的data属性

将Selector对象data属性值取出

title = article.xpath('./header/h2/a/@title')extract_first()
note = article.xpath('./p[2]/text()')extract_first()

执行后,我们就取到了数据:

在这里插入图片描述

上面是最常用的取数据方式,还有下面2种:

# extract()就是将data属性值取出(几乎不用):
title = article.xpath('./header/h2/a/@title')[0].extract()
note = article.xpath('./p[2]/text()')[0].extract()
# 直接使用列表调用extract():可以将列表中的每一个列表元素表示的Selector中的data取出
title = article.xpath('./header/h2/a/@title').extract()
note = article.xpath('./p[2]/text()').extract()

完整代码

import scrapy

class DuanziSpider(scrapy.Spider):
    name = 'duanzi'
    # allowed_domains = ['www.xxx.com']
    start_urls = ['https://duanzixing.com/段子/']

    def parse(self, response):
        article_list = response.xpath('/html/body/section/div/div/article')
        for article in article_list:
            title = article.xpath('./header/h2/a/@title').extract_first()
            note = article.xpath('./p[2]/text()').extract_first()
            print(title, note)

关注Python涛哥!学习更多Python知识!

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

Python爬虫从入门到精通:(27)scrapy框架04_scrapy数据解析_Python涛哥 的相关文章

随机推荐

  • Only one connection receive subscriber allowed.

    这个filter 中报Only one connection receive subscriber allowed 主要是body体为null的情况 Component public class DecryptionFilter imple
  • 【图床搭建】腾讯云COS+PicGo+Typora图床搭建

    图床搭建 腾讯云COS PicGo Typora图床搭建 今天手把手教大家配置一个属于自己的图床 让大家发布在网络中的博客图片也可以被访问 保姆级教学 包教包会 腾讯云COS 1 开通COS 进入腾讯云官网控制台搜索对象存储 腾讯云 产业智
  • C++ 图像处理 之 亮度、色彩平衡调整(逼近PS法)

    C 图像处理 之 亮度 色彩平衡调整 逼近PS法 关键词 图像处理亮度调整 色彩平衡Photoshop 参考博客 http blog csdn net maozefa article details 4493395 http www cnb
  • Shell编程实战

    题目要求 设计一个shell程序计算n的阶乘 要求 1 从命令行接收参数n 2 在程序开始后立即判断n的合法性 即是否有参数 若有是否为正整数 若非法请 给错误提示 3 最后输出计算的结果 考察 if结构 while循环 难点 1 判断参数
  • python报'DataFrame' object has no attribute 'as_matrix'错误

    在python中报错 DataFrame object has no attribute as matrix 解决办法 https pandas pydata org pandas docs stable search html q as
  • JSON中 $ref 的用法

    JSON中 ref 的用法 It is a keyword you can use to refer and reuse schemas 是用来引用 重复使用schema Schema type object title A Non emp
  • 100天精通Python(基础篇)——第5天:数据类型转换

    文章目录 一 字符串 整数 浮点数类型转换的语句 二 数字转字符串 三 字符串转数字 四 整数和浮点数互转 一 字符串 整数 浮点数类型转换的语句 二 数字转字符串 num str str 11 print type num str num
  • mysql下载 补丁_mysql 官方补丁在哪里下载?

    MySQL 64位安装图解 解压缩后运行程序开始安装 选择接受协议 点击下一步 选择developer default 点击 next 检查是否满足安装需求 点击 Execute 按钮后 可能会下载一些程序 到时你自己点击安装就行了 直到所
  • 区块链架构-fabric集群版安装(centos7版本)

    书接上回 配置多机器多节点集群模式 服务器选择说明 暂不考虑高可用 也不考虑kafka 所以先使用三台机器 3M 3台服务器 1O 1 Order 2P 2 Org2Peer 3 1 2证书加密 证书与加密暂时不采用CA 直接使用官方提供的
  • Ai实现FPS游戏自动瞄准 yolov5fps自瞄

    大家好 我是毕加锁 锁 今天来分享一个Yolov5 FPS跟枪的源码解析和原理讲解 代码比较粗糙 各位有什么优化的方式可以留言指出 可以一起交流学习 需要了解的东西和可能会遇到的问题1 xy坐标点与当前鼠标的xy坐标点距离计算 2 获取窗口
  • 两个串口之间传输文件

    一 串口连接 将两个USB TO TTL用两根杜邦线连接 将两个USB TO TTL的RX TX引脚交叉连接 然后将两个USB TO TTL接口接在电脑上 二 传输文件 1 打开两个串口助手 波特率是115200 数据位8 停止位1 无校验
  • el-table合并列&同时在分页时不被割裂开

    核心思想 合并大表格 留出空间给到slot 插槽 在插槽内使用小表格 效果图 具体实现
  • 学生信息管理系统中遇到的一些问题

    学生信息管理系统虽然已经让师父验收了 但感觉还是有很多不足之处 主要是全心全意为客户服务的宗旨有好多地方没有注意到 除了光标的默认输入位置 修改密码时自动默认输入并选中旧密码 师父还提醒我把所有的有关信息的增 删 改 查的窗体都要设为主窗体
  • 访谈,智能座舱开发中的人机交互与人机工程布置

    Mixlab无界社区 跨学科 智能座舱 HCI 前沿知识 N1 智能座舱开发中的人机交互与人机工程布置 丰田部分车型的多媒体系统上的Apple CarPlay 今天是汽车HMI设计师 我最喜欢苹果的UI啦 IOS的UI风格 meta sha
  • Nacos 快速上手

    Nacos 快速上手 文章目录 Nacos 快速上手 准备工作 部署 Spring Boot 集成 配置说明 Spring Cloud Nacos Dubbo Nacos 公共 API 包 服务提供者 服务消费者 问题 微服务现在越来火 有
  • php奇偶数怎么求,php奇偶数循环

    根据表单提交的数据用户在浏览器生成图一示例的图形 图形参数说明 大小 图形中最长那一行的字符数 奇数行 偶数行 最长那一个行为奇数行 紧邻的两行算偶数行 以此类推 案例效果图 应用了for循环 还应用了一个php函数 str repeat
  • 初级算法-12-实现 strStr()

    描述 实现 strStr 函数 给你两个字符串 haystack 和 needle 请你在 haystack 字符串中找出 needle 字符串出现的第一个位置 下标从 0 开始 如果不存在 则返回 1 说明 当 needle 是空字符串时
  • Android Context 上下文 你必须知道的一切

    转载请标明出处 http blog csdn net lmj623565791 article details 40481055 本文出自 张鸿洋的博客 本文大多数内容翻译自 http www doubleencore com 2013 0
  • maven(四):一个基本maven项目的pom.xml配置

    继续之前创建的test项目 一个基本项目的pom xml文件 通常至少有三个部分 第一部分 项目坐标 信息描述等
  • Python爬虫从入门到精通:(27)scrapy框架04_scrapy数据解析_Python涛哥

    scrapy数据解析 这节课 我们来看下scrapy中的数据解析 创建工程 爬取内容 爬取段子网中的段子 https duanzixing com 段子 回顾上节课所学的知识 创建scrapy 我们先来创建工程和爬虫文件 1 scrapy