ホームページ  >  記事  >  バックエンド開発  >  パイプラインに保存されたサンプルコードを共有する

パイプラインに保存されたサンプルコードを共有する

PHP中文网
PHP中文网オリジナル
2017-06-20 14:39:151482ブラウズ

スパイダーの最後の関数が item を返すと、scrapy はパイプラインで

process_item(self, item, spider):
函数并传入item,spider等参数
在这里可以将数据进行持久化储存
我的piple代码
# -*- coding: utf-8 -*-# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.htmlimport MySQLdb
import MySQLdb.cursorsfrom twisted.enterprise import adbapiclass MyPipeline(object):  ##这里的函数名于setting中的对应

    def __init__(self, dbpool):
        self.dbpool = dbpool
    @classmethod    ##得到数据库的连接
    def from_settings(cls, settings):
        dbargs = dict(
                host = settings['MYSQL_HOST'],
                db = settings['MYSQL_DBNAME'],
                port = settings['MYSQL_PORT'],
                user = settings['MYSQL_USER'],
                passwd = settings['MYSQL_PASSWD'],
                charset = 'utf8',
                cursorclass = MySQLdb.cursors.DictCursor,
                use_unicode = True,
            )
        dbpool = adbapi.ConnectionPool('MySQLdb', **dbargs)return cls(dbpool)

    def process_item(self, item, spider): ##这个函数会在spider返回时调用
        d = self.dbpool.runInteraction(self._do_upinsert, item, spider)return item

    def _do_upinsert(self, conn, item, spider):
        valid = Truefor data in item:if not data:
                valid = Falseif valid:         ##执行sql
            result = conn.execute(‘sql’)  if result:
                print 'added a record'else:
                print 'failed insert into table'

代码git地址:过几天会上传
を呼び出します

以上がパイプラインに保存されたサンプルコードを共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。