在使用Scrapy爬虫获取一些数据之后:
我把数据传递给一个管道对象,使用SQLAlchemy将其写入SQLite表中:
我希望能够将表名设置为一个变量,而不是像现在一样硬编码为
class Test_Spider(Spider):
name = "test"
def start_requests(self):
for i in range(900,902,1):
........
yield item
我把数据传递给一个管道对象,使用SQLAlchemy将其写入SQLite表中:
class SQLlitePipeline(object):
def __init__(self):
_engine = create_engine("sqlite:///data.db")
_connection = _engine.connect()
_metadata = MetaData()
_stack_items = Table("table1", _metadata,
Column("id", Integer, primary_key=True),
Column("detail_url", Text),
_metadata.create_all(_engine)
self.connection = _connection
self.stack_items = _stack_items
def process_item(self, item, spider):
is_valid = True
我希望能够将表名设置为一个变量,而不是像现在一样硬编码为
"table1"
。如何实现这个功能?
open_spider
内打开连接而不是__init__
。(https://doc.scrapy.org/en/latest/topics/item-pipeline.html#open_spider) - lucasnadalutti