Bricks 内置了几个引擎,供开发者直接使用,内置引擎地址为:bricks.plugins.make_seeds
by_csv
从 CSV 中获取种子, csv 必须有表头,可以使用 SQL 进行数据查询
:param path: 文件路径:param query:查询sql, 使用<TABLE>关键字来代替当前表名:param batch_size: 一次获取多少条数据:param skip: 跳过初始多少种子:param reader_options: 初始化csv reader的其他参数:param record: 历史记录,记录投放状态的容器
示例:
from bricks.plugins import make_seeds
from bricks.spider import form
class MySpider(form.Spider):
@property
def config(self) -> form.Config:
return form.Config(
init=[
form.Init(
func=make_seeds.by_csv,
kwargs={
"path": "a.csv",
"query": "select * from <TABLE> where age>18"
}
)
],
)
if __name__ == '__main__':
spider = MySpider()
spider.run()by_mongo
从 Mongo 中加载数据作为种子
:param path: 文件路径:param conn:Mongo连接:param query: 查询Query, 使用的Mongo查询语法,是一个字典:param database:Mongo的数据库名称:param batch_size: 一次获取多少条数据:param skip: 跳过初始多少种子:param sort: 排序方式:param record: 历史记录,记录投放状态的容器
示例:
from bricks.db.mongo import Mongo
from bricks.plugins import make_seeds
from bricks.spider import form
mongo_db = Mongo()
class MySpider(form.Spider):
@property
def config(self) -> form.Config:
return form.Config(
init=[
form.Init(
func=make_seeds.by_mongo,
kwargs={
"path": "user_info",
"conn": mongo_db
}
)
],
)
if __name__ == '__main__':
spider = MySpider()
spider.run()by_sqlite
从 Sqlite 中加载数据作为种子
:param path: 查询SQL:param conn:Sqlite连接:param batch_size: 一次获取多少条数据:param skip: 跳过初始多少种子:param record: 历史记录,记录投放状态的容器
示例:
from bricks.db.sqlite import Sqlite
from bricks.plugins import make_seeds
from bricks.spider import form
sqlite_conn = Sqlite("local.db")
class MySpider(form.Spider):
@property
def config(self) -> form.Config:
return form.Config(
init=[
form.Init(
func=make_seeds.by_sqlite,
kwargs={
"path": "select * from user_info where age>18",
"conn": sqlite_conn
}
)
],
)
if __name__ == '__main__':
spider = MySpider()
spider.run()
by_redis
通过 redis 初始化种子, 仅支持小批量数据, 不支持断点续投
:param path: 键值, 当key_type为string时, 此参数为筛选条件, 如*test*:param conn:Redis实例:param batch_size: 一次获取多少条数据:param key_type: 存储类型
示例:
from bricks.db.redis_ import Redis
from bricks.plugins import make_seeds
from bricks.spider import form
redis = Redis()
class MySpider(form.Spider):
@property
def config(self) -> form.Config:
return form.Config(
init=[
form.Init(
func=make_seeds.by_redis,
kwargs={
"path": "*|*",
"conn": redis,
"key_type": "string",
}
)
],
)
if __name__ == '__main__':
spider = MySpider()
spider.run()