Scrapy爬虫框架介绍

2022-09-29 16:08:31 浏览数 (1)

Scrapy爬虫框架介绍

  • 文档
    • 英文文档
    • 中文文档
  • 什么是scrapy 基于twisted搭建的异步爬虫框架. scrapy爬虫框架根据组件化设计理念和丰富的中间件, 使其成为了一个兼具高性能和高扩展的框架
  • scrapy提供的主要功能
    • 具有优先级功能的调度器
    • 去重功能
    • 失败后的重试机制
    • 并发限制
    • ip使用次数限制
    • ....
  • scrapy的使用场景
    • 不适合scrapy项目的场景
      • 业务非常简单, 对性能要求也没有那么高, 那么我们写多进程, 多线程, 异步脚本即可.
      • 业务非常复杂, 请求之间有顺序和失效时间的限制.
      • 如果你不遵守框架的主要设计理念, 那就不要使用框架
    • 适合使用scrapy项目
      • 数据量大, 对性能有一定要求, 又需要用到去重功能优先级功能的调度器
  • scrapy组件

Scrapy教程

安装

代码语言:javascript复制
pip install scrapy

创建项目

代码语言:javascript复制
scrapy startproject jd_crawler_scrapy

目录结构

  • spiders(目录) 存放SPIDERS项目文件, 一个scrapy项目下可以有多个爬虫实例
  • items 解析后的结构化结果.
  • middlewares 下载器中间件和爬虫中间件的地方
  • piplines 处理items的组件, 一般都在pipelines中完成items插入数据表的操作
  • settings 统一化的全局爬虫配置文件
  • scrapy.cfg 项目配置文件

scrapy爬虫demo

代码语言:javascript复制
import scrapy


class JdSearch(scrapy.Spider):
    name = "jd_search"

    def start_requests(self):
        for keyword in ["鼠标", "键盘", "显卡", "耳机"]:
            for page_num in range(1, 11):
                url = f"https://search.jd.com/Search?keyword={keyword}&page={page_num}"

                # 选用FormRequest是因为它既可以发送GET请求, 又可以发送POST请求
                yield scrapy.FormRequest(
                    url=url,
                    method='GET',
                    # formdata=data,             # 如果是post请求, 携带数据使用formdata参数
                    callback=self.parse_search   # 指定回调函数处理response对象
                )


    def parse_search(self, response):
        print(response)

启动爬虫

代码语言:javascript复制
scrapy crawl spider_name

0 人点赞