例子

本教程将引导您完成这些任务:

  • 快速熟悉 ayugespidertools 库的使用方法和支持场景

  • 编写爬虫来抓取站点并提取数据

1. 快速开始

你可以使用以下两种方式来快速开始

1.1. 方式一:ayugespidertools

通过跑通本库 Github 中的 GIF 示例

具体请点击跳转至 AyugeSpiderTools 查看

1.2. 方式二:DemoSpider

通过另一个的演示项目 DemoSpider 来选择复现某些场景

最好的学习方法是通过 Github 上的 DemoSpider 示例,您可以使用它快速复现某些场景下的功能。

本库 ayugespidertoolsgithub README.md 中所有功能,都可以在 DemoSpider 中找到示例。

DemoSpider 项目位于:https://github.com/shengchenyang/DemoSpider ,您可以在项目的自述文件中找到有关它的更多信息。

2. 应用场景介绍

根据 DemoSpider 中的各个 spider 对一些应用场景进行简要的补充介绍,总体的介绍为:

+ 0).以下场景全支持从 nacos 或 consul 中获取配置,不一一举例。

# 数据存入 Mysql 的场景:
+ 1).demo_one: 从 .conf 中获取 mysql 配置
+ 3).demo_three: 从 consul 中获取 mysql 配置
+ 21).demo_mysql_nacos: 从 nacos 中获取 mysql 配置
+ 5).demo_five: Twisted 异步存储示例
+ 24).demo_aiomysql: 结合 aiomysql 实现的 asyncio 异步存储示例
+ 13).demo_AyuTurboMysqlPipeline: mysql 同步连接池的示例

# 数据存入 MongoDB 的场景:
+ 2).demo_two: 从 .conf 中获取 mongodb 配置
+ 4).demo_four: 从 consul 中获取 mongodb 配置
+ 6).demo_six: Twisted 异步存储示例
+ 17).demo_mongo_async: 结合 motor 实现的 asyncio 异步存储示例

# 数据存入 PostgreSQL 的场景(需要安装 ayugespidertools[database])
+ 22).demo_nine: 从 .conf 中获取 postgresql 配置
+ 23).demo_ten: Twisted 异步存储示例
+ 27).demo_eleven: asyncio 异步存储示例

# 数据存入 ElasticSearch 的场景(需要安装 ayugespidertools[database])
+ 28).demo_es: 普通同步存储示例
+ 29).demo_es_async: asyncio 异步存储示例

# 数据存入 Oracle 的场景(需要安装 ayugespidertools[database])
+ 25). demo_oracle: 普通同步存储示例
+ 26). demo_oracle_twisted: Twisted 异步存储示例

- 7).demo_seven: 使用 requests 来请求的场景(已删除,更推荐 aiohttp 方式)
+ 8).demo_eight: 同时存入 Mysql 和 MongoDB 的场景
+ 9).demo_aiohttp_example: 使用 aiohttp 来请求的场景
+ 10).demo_aiohttp_test: scrapy aiohttp 在具体项目中的使用方法示例

+ 11).demo_proxy_one: 快代理动态隧道代理示例
+ 12).demo_proxy_two: 测试快代理独享代理
+ 14).demo_crawl: 支持 scrapy CrawlSpider 的示例

# 本库中给出支持 Item Loaders 特性的示例
+ 15).demo_item_loader: 本库中使用 Item Loaders 的示例
- 16).demo_item_loader_two: 已删除,可查看 demo_item_loader,可方便的使用 Item Loaders 了

+ 18).demo_mq: 数据存入 rabbitmq 的模板示例
+ 19).demo_kafka: 数据存入 kafka 的模板示例
+ 20).demo_file: 使用本库 pipeline 下载图片等文件到本地的示例
+ 30).demo_file_sec: 自行实现的图片下载示例
+ 31).demo_oss: 使用本库 pipeline 上传到 oss 的示例
+ 32).demo_oss_sec: 自行实现的 oss 上传示例

基本查看以上 spider 即可了解使用方法,但有些示例还是不够详细,对以上内容进行补充。

  • 以上场景有需要 consulnacos 上的相关配置的示例,与 .conf 中的配置内容一致,以下为 json 格式配置的示例:

    {
        "mysql":{
            "host":"***",
            "port":3306,
            "user":"***",
            "password":"***",
            "database":"***",
            "charset":"选填:默认 utf8mb4"
        },
        "mongodb":{
            "host":"***",
            "port":27017,
            "user":"***",
            "password":"***",
            "database":"***",
            "authsource":"***",
            "authMechanism":"选填:默认 SCRAM-SHA-1"
        },
        "postgresql": {
            "host":"***",
            "port":5432,
            "user":"***",
            "password":"***",
            "database":"***",
            "charset":"选填:默认 UTF8"
        },
        "mq":{
            "host":"***",
            "port":5672,
            "username":"***",
            "password":"***",
            "virtualhost":"***",
            "queue":"***",
            "exchange":"***",
            "routing_key":"***"
        },
        "kafka":{
            "bootstrap_servers":"127.0.0.1:9092 #若多个用逗号分隔",
            "topic":"***",
            "key":"***"
        },
        "kdl_dynamic_proxy":{
            "proxy":"o668.kdltps.com:15818",
            "username":"***",
            "password":"***"
        },
        "kdl_exclusive_proxy":{
            "proxy":"http://kps.kdlapi.com/api/getkps?orderid=***&num=100&format=json",
            "username":"***",
            "password":"***",
            "index":1
        }
    }