是否可以使用 Scrapy 从网站上抓取数据,并将该数据保存在 Microsoft SQL Server 数据库中?
如果是,有没有这样做的例子?它主要是Python问题吗?即,如果我发现一些 Python 代码保存到 SQL Server 数据库中,那么 Scrapy 可以做同样的事情吗?
是否可以使用 Scrapy 从网站上抓取数据,并将该数据保存在 Microsoft SQL Server 数据库中?
如果是,有没有这样做的例子?它主要是Python问题吗?即,如果我发现一些 Python 代码保存到 SQL Server 数据库中,那么 Scrapy 可以做同样的事情吗?
是的,但是您必须自己编写代码来完成它,因为scrapy 不提供写入数据库的项目管道。
从 scrapy 文档中阅读Item Pipeline页面,该页面更详细地描述了该过程(这里以JSONWriterPipeline为例)。基本上,找到一些写入 SQL Server 数据库的代码(使用 PyODBC 之类的东西),您应该能够对其进行调整以创建自定义项目管道,将项目直接输出到 SQL Server 数据库。
在这里超级迟到并且完全自我提升,但我认为这可以帮助某人。我只是写了一个小scrapy扩展来将抓取的项目保存到数据库中。scrapy-sqlitem
它非常易于使用。
pip install scrapy_sqlitem
使用 SqlAlchemy 表定义 Scrapy 项
from scrapy_sqlitem import SqlItem
class MyItem(SqlItem):
sqlmodel = Table('mytable', metadata
Column('id', Integer, primary_key=True),
Column('name', String, nullable=False))
添加以下管道
from sqlalchemy import create_engine
class CommitSqlPipeline(object):
def __init__(self):
self.engine = create_engine("sqlite:///")
def process_item(self, item, spider):
item.commit_item(engine=self.engine)
不要忘记将管道添加到设置文件并创建数据库表(如果它们不存在)。
http://doc.scrapy.org/en/1.0/topics/item-pipeline.html#activating-an-item-pipeline-component
http://docs.sqlalchemy.org/en/rel_1_1/core/tutorial.html#define-and-create-tables