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()