0

是否可以使用 Scrapy 从网站上抓取数据,并将该数据保存在 Microsoft SQL Server 数据库中?

如果是,有没有这样做的例子?它主要是Python问题吗?即,如果我发现一些 Python 代码保存到 SQL Server 数据库中,那么 Scrapy 可以做同样的事情吗?

4

2 回答 2

2

是的,但是您必须自己编写代码来完成它,因为scrapy 不提供写入数据库的项目管道。

从 scrapy 文档中阅读Item Pipeline页面,该页面更详细地描述了该过程(这里以JSONWriterPipeline为例)。基本上,找到一些写入 SQL Server 数据库的代码(使用 PyODBC 之类的东西),您应该能够对其进行调整以创建自定义项目管道,将项目直接输出到 SQL Server 数据库。

于 2013-02-07T11:14:42.413 回答
2

在这里超级迟到并且完全自我提升,但我认为这可以帮助某人。我只是写了一个小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

于 2015-08-15T01:24:04.527 回答