2013-02-07 9 views
0

Scrapy를 사용하여 웹 사이트에서 데이터를 가져 와서 해당 데이터를 Microsoft SQL Server 데이터베이스에 저장할 수 있습니까?Scrapy/Python 및 SQL Server

예인 경우 예가 있습니까? 주로 파이썬 문제입니까? 즉, Python의 일부 코드가 SQL Server 데이터베이스에 저장되어 있으면 Scrapy가 동일한 작업을 수행 할 수 있습니까?

+1

나는 예를 보지 못했지만는 XML에 긁힌 자국 때문에'SQL <-> XML' 예를 많이가 있어야합니다. –

+0

좋은 지적 Preet, 고마워. – Ciwan

답변

1

그렇습니다. 그러나 치료는 데이터베이스에 쓰는 항목 파이프 라인을 제공하지 않으므로 직접 코드를 작성해야합니다.

과정을 자세히 설명하는 치료 문서 (JSONWriterPipeline 예를 들어)의 Item Pipeline 페이지를 읽으십시오. 기본적으로 PyODBC와 같은 것을 사용하여 SQL Server 데이터베이스에 쓰는 코드를 찾아서 항목을 SQL Server 데이터베이스에 직접 출력하는 사용자 지정 항목 파이프 라인을 만들 수 있어야합니다.

2

여기에 슈퍼 후반 및 완전히 자체 홍보하지만,이 사람을 도울 수 있다고 생각합니다. 방금 긁힌 항목을 데이터베이스에 저장하기 위해 약간의 치료 확장 프로그램을 작성했습니다. scrapy-sqlitem

매우 사용하기 쉽습니다.

pip install scrapy_sqlitem 

사용 Scrapy 항목을 정의 SqlAlchem ​​y의 테이블

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