IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python-爬虫(Scrapy爬虫框架,爬取豆瓣读书和评分) -> 正文阅读

[Python知识库]Python-爬虫(Scrapy爬虫框架,爬取豆瓣读书和评分)

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')

运行结果

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

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:49:11  更:2022-09-30 00:52:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 7:02:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码