例子¶
本教程将引导您完成这些任务:
快速熟悉
ayugespidertools
库的使用方法和支持场景编写爬虫来抓取站点并提取数据
1. 快速开始¶
你可以使用以下两种方式来快速开始:
1.1. 方式一:ayugespidertools¶
通过跑通本库 Github
中的 GIF
示例,具体请点击跳转至 AyugeSpiderTools 查看。若不是很熟悉 Scrapy
库,可选择先查看本文档中的示例教程。
1.2. 方式二:DemoSpider¶
另一种较方便的方式是:通过演示项目 DemoSpider 来快速复现某些场景及功能。
本库 ayugespidertools
的 github README.md 中所有功能,都可以在 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
即可了解使用方法,但有些示例还是不够详细,对以上内容进行补充。
以上场景有需要
consul
或nacos
上的相关配置的示例,与.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 } }