2013-02-07 79 views
0

是否有可能得到使用Scrapy數據從網站刮掉,並保存在一個Microsoft SQL Server數據庫的數據?Scrapy/Python和SQL服務器

如果是,是否有正在做的任何的例子?它主要是一個Python問題嗎?即,如果我發現保存到一個SQL Server數據庫的Python的一些代碼,然後Scrapy可以做的一樣嗎?

+1

我還沒有看到任何例子,但因爲它刮掉,以XML,必須有大量的'SQL <-> XML'例子。 –

+0

好一點普里特,謝謝。 – Ciwan

回答

1

是的,但你必須編寫代碼來自己做,因爲scrapy不提供的項目管道寫入到數據庫。

請閱讀scrapy文檔中的Item Pipeline頁面,其中詳細描述了該過程(以JSONWriterPipeline爲例)。基本上,找到一些寫入SQL Server數據庫的代碼(使用PyODBC之類的東西),並且應該可以調整它以創建一個自定義項目管道,將項目直接輸出到SQL Server數據庫。

2

超級晚,完全自我宣傳在這裏,但我認爲這可以幫助別人。我只是寫了一個小小的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