Python-爬虫(Scrapy爬虫框架,爬取豆瓣读书和评分)

2023-11-05

1.Scrapy注意点

Scrapy是爬虫框架。

它分为一下部分,其中引擎是核心

  1. Scrapy Engine(引擎):负责spider、ltemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
  2. Scheduler(调度器):它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。默认使用16个线程爬取数据
  3. Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给spider来处理。
  4. Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取ltem字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)。
  5. ltem Pipeline(管道):它负责处理Spider中获取到的ltem,并进行后期处理(详细分析、过滤、存储等)的地方。(将爬虫爬取到的数据进行存储)
  6. Downloader Middlewares(下载中间件):一个可以自定义扩展下载功能的组件。
  7. Spider Middlewares (Spider中间件):一个可以自定扩展和操作引擎和spider中间通信的功能组件。

通过pip install scrapy在终端上下载这个爬虫框架。

注意:框架不能像包一样直接导入,需要生成框架结构,在这个结构上操作

启动框架:

首先在终端上进入到要生成项目的路径.

然后输入scrapy startproject 项目名启动框架
在这里插入图片描述
此时项目路径下会有一个框架生成的文件夹

在这里插入图片描述

之后生成爬虫文件命令如图:
在这里插入图片描述

先进入爬虫spiders文件夹中,输入scrapy genspider 爬虫文件名称 爬取网页的链接命令生成爬虫文件。这里以豆瓣读书为例

在这里插入图片描述

最后使用scrapy crawl +爬虫名(book)来启动爬虫,因为在终端不方便数据查询,所以一般会使用其他方式启动。

这里创建新文件运行这个命令
在这里插入图片描述
运行结果scrapy日志信息是红色输出,网页源码以白色输出。

2. Scrapy爬取豆瓣读书和评分

scrapy爬取基本流程如下:

  1. 设置爬虫基础参数 settings.py
  2. 爬虫
  3. 数据封装
  4. 管道

设置爬虫基础参数
在这里插入图片描述
这里不遵守这个协议,否则爬取不到什么信息了。改成False

在这里插入图片描述
默认爬取的线程数,可以取消注释,并修改数目,默认16个线程。

在这里插入图片描述
爬取网页后暂停的时间数目,默认不暂停。

在这里插入图片描述
请求头,这里需要至少要修改成浏览器信息

在这里插入图片描述
设定保存优先级,数字越大,优先级越小。用于多种保存方式下,哪一种保存方式优先。

代码部分

数据定义items.py

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html

import scrapy


# 封装数据
class TestscrapyItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    title = scrapy.Field()
    rating_nums = scrapy.Field()

爬虫部分spiders/book.py

import scrapy
import re
from ..items import TestscrapyItem


class BookSpider(scrapy.Spider):
    name = 'book'  # 通过这个名字启动爬虫
    allowed_domains = ['book.douban.com']
    start_urls = ['https://book.douban.com/top250?start=0']

    def parse(self, response):
        # response是爬虫返回的网页数据
        # print(response.text)

        # 封装对象
        items = TestscrapyItem()

        title = re.findall('<a href=".*?" οnclick=.*?;moreurl.*?; title="(.*?)"', response.text)
        rating_nums = re.findall('<span class="rating_nums">(.*?)</span>', response.text)

        # print(rating_nums)
        # 封装数据给pipelines
        for title, rating_nums in zip(title, rating_nums):
            items['title'] = title
            items['rating_nums'] = rating_nums
            yield items #给pipelines

数据存储部分pipelines.py

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html


# useful for handling different item types with a single interface
from itemadapter import ItemAdapter


# 保存数据
class TestscrapyPipeline:
    def __init__(self):
        self.file = open('data.txt', 'w', encoding='utf-8')

    def process_item(self, item, spider):
        self.file.write(f"{item['title']}  评分:{item['rating_nums']}\n==========\n")
        return item  # 通知爬虫,这个数据已经保存成功了

    # 析构函数
    def __del__(self):
        self.file.close()
        print('文件保存成功')

启动爬虫执行cmd命令 start.py

import os

os.system('scrapy crawl book')

运行结果

在这里插入图片描述
在这里插入图片描述

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

Python-爬虫(Scrapy爬虫框架,爬取豆瓣读书和评分) 的相关文章

随机推荐

  • 图的遍历(详解DFS与BFS)

    首先 我们来看一下涉及的知识点 图 图 G V E 由顶点集 V 和边集 E 组成 每条边对应一个点对 v w 其中 v w 属于 V 如果图中的点对是有序的 那么该图就是有向图 反之为无向图 邻接点 若顶点 v 与 w 之间存在一条边 则
  • 6、状态模式

    文章目录 概念 3个角色 demo 概念 状态模式属于行为型模式 只需要改变对象状态即可改变对象的行为 状态模式对 开闭原则 的支持并不太好 所以对象状态最好为有限个且不常变动 场景 1 行为随状态 属性改变而改变的场景 2 条件 分支语句
  • 终于拿下淘宝了。淘宝抓取,淘宝爬虫。taobao spider

    上个demo先
  • Linux 查看当前路径下所有文件夹大小的方法

    进入需要查看的目录 例如 根目录 cd 查看当前目录下每个文件夹的大小 du sh 查看当前目录下每个文件夹的大小并排序 单位 字节 n 按照数值排序 du s sort n 补充 du sh 查看当前目录总共占的容量 而不单独列出各子项占
  • Task-Oriented Conversation Generation Using Heterogeneous Memory Networks

    EMNLP 2019 录用长文 Abstract 如何将外部知识库与对话模型结合起来是一个重要的问题 传统上人们是使用了Memory Network 然而当面对多种来源的 异构的info时 Mem对这些info的处理并不好 我理解的是权重的
  • Numpy基础数据结构

    Numpy基础数据结构 NumPy数组是一个多维数组对象 称为ndarray 其由两部分组成 实际的数据 描述这些数据的元数据 Numpy Python开源的科学计算工具包 高级的数据编程工具 ndarray 是强大的N维数组对象 对数据结
  • Eclipse导入项目No projects are found to import

    如果发现导入工程 impot 的时候 出现 No projects are found to import 的提示 首先查看项目目录中是否有隐藏文件 project 还有目录结构也还要有一个隐藏文件 classpath 如果没有 你可以参考
  • 不能不知道的OS模块的那些常用函数(附内置变量)

    文章目录 OS 模块 1 1 常用函数 1 2 使用示例 1 3 内置变量 1 4 附 内置变量详解 OS 模块 该模块提供了各种函数 允许您操作文件路径和检查与路径相关的信息 比如是否存在 文件扩展名 目录名等等 1 1 常用函数 其中一
  • [DIP]如何提取文件中的公章,并识别其朝向是否准确

    任务描述 我们需要知道 我们盖在文件上的红章是否是端正的 需要解决的问题 1 图章的识别 2 图章的定位 3 图章的方向判定 思路 图章基本上是红色的 我们先根据颜色提取可能的图章区域 当然 假如文档中 还有其他红色的区域 这一步都会提取出
  • 从Authy中导出账户和secret

    文章作者 GoodBoyboy 文章链接 https blog goodboyboy top posts 2689781648 html 版权声明 本博客所有文章除特别声明外 均采用 CC BY NC SA 4 0 许可协议 转载请注明来自
  • oracle bulk collect forall,Oracle批量绑定forallbulkcollect用法

    采用bulk collect 可以将查询结果一次性的加载到collections中 而不是通过CURSOR一条一条地处理 可以在select into fetchinto 采用bulk collect 可以将查询结果一次性的加载到colle
  • 银行项目测试

    主要的核心业务 存款业务 吸收客户的存款 为客户发放利息 属于负债业务 贷款业务 发放贷款给客户 收取客户的利息 属于银行的资产业务 中间业务 银行已中间人的身份 为客户办理业务 收取客户的手续费 例如 批量代发工资 批量代收水 电 燃气费
  • 华为OD机试 Python 【单词加密】

    题目 给你一句英文 里面有很多单词 单词间用空格隔开 我们要对这句子做点的变化 加密规则 如果单词里有元音 a e i o u 大小写都算 就把元音变成 如果一个单词完全没有元音 那就让这个单词的第一个和最后一个字母交换位置 输入 一句英文
  • SKB几个复制函数的区别

    1 skb clone Skb clone 函数只是复制sk buff结构 并不复制skb的数据缓冲区 Clone后的sk buff结构与原始的sk buff指向同一数据缓冲区 原始的和clone后的skb描述符的cloned值都会被置1
  • 前端基础之滚动显示

    marquee滚动标签 注 该标签已经过时 被w3c弃用 使用样例
  • 设计模式(一)- 模板方法模式

    模板方法模式 文章目录 模板方法模式 1 模板方法模式 1 介绍 2 应用实例 代码 1 父类抽象模板 统一方法定为final 2 子类去实现不同的方法 3 其他子类实现不同的方法 4 结果展示 1 模板方法模式 在模板模式 Templat
  • 微信小程序 功能页导航 functional-page-navigator 组件

    完整微信小程序 Java后端 技术贴目录清单页面 必看 仅在插件中有效 用于跳转到插件功能页 属性 类型 默认值 必填 说明 最低版本 version string release 否 跳转到的小程序版本 线上版本必须设置为 release
  • linux安装idea并创建快捷方式

    一 安装 1 下载 在linux自带的火狐浏览器打开下载更方便 下载 IntelliJ IDEA JetBrains 功能强大 符合人体工程学的 Java IDE 选择Linux 这里以下载社区版为例 我下载的版本是2022 2 3 文件名
  • 了解应用层

    应用层 1 概述 2 应用程序组织方式 2 1 C S方式 2 1 P2P方式 3 动态主机配置协议DHCP 3 1 DHCP工作流程 4 域名系统DNS 4 1 域名结构 4 2 域名分类 4 3 域名服务器 4 3 1 分类 4 4 D
  • Python-爬虫(Scrapy爬虫框架,爬取豆瓣读书和评分)

    文章目录 1 Scrapy注意点 2 Scrapy爬取豆瓣读书和评分 代码部分 数据定义items py 爬虫部分spiders book py 数据存储部分pipelines py 启动爬虫执行cmd命令 start py 1 Scrap