一、scrapy简介

  1. scrapy概念
    Scrapy一个Python编写开源网络爬虫框架。它是一个设计用于爬取网络数据提取结构数据框架
  1. 工作流程

在这里插入图片描述

  1. 爬虫起始url构造request对象–>爬虫中间件–>引擎–>调度
  2. 调度器把request–>引擎–>下载中间件—>下载
  3. 下载发送请求获取response响应—->下载中间件—->引擎—>爬虫中间件—>爬虫
  4. 爬虫提取url地址,组装成request对象—->爬虫中间件—>引擎—>调度器,重复步骤2
  5. 爬虫提取数据—>引擎—>管道处理保存数据

在这里插入图片描述

二、关于中间件

  1. 爬虫中间件(Spider Middleware)

作用: 爬虫中间件主要负责处理从引擎发送到爬虫的请求和从爬虫返回到引擎的响应。这些中间件在请求发送给爬虫之前或响应返回给引擎之前可以对它们进行处理。

  1. 修改请求或响应。
  2. 请求发送到爬虫之前进行预处理
  3. 在响应返回给引擎之前进行后处理。
  4. 过滤修改爬虫产生的请求和响应。
  1. 下载中间件(Downloader Middleware)
  1. 修改请求或响应。
  2. 在请求被发送到下载器之前进行预处理
  3. 在响应返回给引擎之前进行后处理。
  4. 对请求进行代理设置代理认证等。

三、scrapy三个内置对象

  1. scrapy.Item
import scrapy

class MyItem(scrapy.Item):
    title = scrapy.Field()
    url = scrapy.Field()
  1. scrapy.Request
import scrapy
class MySpider(scrapy.Spider):
    name = 'myspider'

    def start_requests(self):
        urls = ['http://example.com/page1', 'http://example.com/page2']
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        # 处理响应的逻辑
        pass
  1. scrapy.Response:
import scrapy

class MySpider(scrapy.Spider):
    name = 'myspider'

    def start_requests(self):
        urls = ['http://example.com/page1']
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        # 使用 response.xpath 或 response.css取数
        title = response.xpath('//h1/text()').get()

三个内置对象是构建 Scrapy 爬虫时非常重要的组件。scrapy.Item 用于封装爬取到的数据,scrapy.Request 用于定义要爬取的URL和请求参数,scrapy.Response 用于处理从服务器返回的响应。通过巧妙地使用这些对象,你可以有效地构建和组织你的爬虫逻辑

四、scrapy的入门使用

  1. 安装
pip/pip3 install scrapy
  1. scrapy项目开发流程
  1. 定义一个管道
  2. 重写管道类的process_item方法
  3. process_item方法处理完item之后必须返回给引擎
  4. setting文件启用管道

管道文件

import json

class ItcastPipeline():
    # 爬虫文件中提取数据的方法yield一次item,就会运行一次
    # 该方法固定名称函数
    def process_item(self, item, spider):
        print(item)
        return item

配置文件

#值越小越先运行
ITEM_PIPELINES = {
    'myspider.pipelines.ItcastPipeline': 400
}
  1. 运行爬虫项目
scrapy crawl baidu

原文地址:https://blog.csdn.net/cristianoxm/article/details/134740085

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_50298.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注