是否有可能得到使用Scrapy數據從網站刮掉,並保存在一個Microsoft SQL Server數據庫的數據?Scrapy/Python和SQL服務器
如果是,是否有正在做的任何的例子?它主要是一個Python問題嗎?即,如果我發現保存到一個SQL Server數據庫的Python的一些代碼,然後Scrapy可以做的一樣嗎?
是否有可能得到使用Scrapy數據從網站刮掉,並保存在一個Microsoft SQL Server數據庫的數據?Scrapy/Python和SQL服務器
如果是,是否有正在做的任何的例子?它主要是一個Python問題嗎?即,如果我發現保存到一個SQL Server數據庫的Python的一些代碼,然後Scrapy可以做的一樣嗎?
是的,但你必須編寫代碼來自己做,因爲scrapy不提供的項目管道寫入到數據庫。
請閱讀scrapy文檔中的Item Pipeline頁面,其中詳細描述了該過程(以JSONWriterPipeline爲例)。基本上,找到一些寫入SQL Server數據庫的代碼(使用PyODBC之類的東西),並且應該可以調整它以創建一個自定義項目管道,將項目直接輸出到SQL Server數據庫。
超級晚,完全自我宣傳在這裏,但我認爲這可以幫助別人。我只是寫了一個小小的scrapy擴展名,以將刮取的項目保存到數據庫中。 scrapy-sqlitem
它超級簡單易用。
pip install scrapy_sqlitem
使用定義Scrapy項目SQLAlchemy的表
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
我還沒有看到任何例子,但因爲它刮掉,以XML,必須有大量的'SQL <-> XML'例子。 –
好一點普里特,謝謝。 – Ciwan