[爬虫類]研究ノートのday62 7.4戦闘scrapyは、Redisの - Redisのデータ処理に

7.4 scrapy-Redisのリアル - Redisのデータを処理します

ここに画像を挿入説明

Redisの中のデータを処理

データネットワークは戻って登って運命が、Redisの上で何の治療法はありません。私たちは別の契約を行う必要があるので、アイテムのキー:私たちの前に、今これらのデータはyouyuanのRedisの中に保存されている彼らのITEM_PIPELINESをカスタマイズする設定ファイルが、RedisPipelineの使用はありません。

見ることができるscrapy-youyuanディレクトリ内のprocess_items.pyファイルを、ファイルのRedisからステンシル項目を実行される読取処理によって提供された例をscrapyは、Redisのです。

我々はyouyuanにしたいと仮定します。アイテムはMongoDBの中に格納されたデータが書き込まれる読み出しやMySQL、そして我々は独自の記述することができprocess_youyuan_profile.py、バックグラウンドで走り続け、その後、ファイルをデータウェアハウスをバックアップをクロール保つことができます。

MongoDBの店

  1. MongoDBのデータベースを起動します。sudo mongod
  2. 次の手順を実行します。py2 process_youyuan_mongodb.py
# process_youyuan_mongodb.py

# -*- coding: utf-8 -*-

import json
import redis
import pymongo

def main():

    # 指定Redis数据库信息
    rediscli = redis.StrictRedis(host='192.168.199.108', port=6379, db=0)
    # 指定MongoDB数据库信息
    mongocli = pymongo.MongoClient(host='localhost', port=27017)

    # 创建数据库名
    db = mongocli['youyuan']
    # 创建表名
    sheet = db['beijing_18_25']

    while True:
        # FIFO模式为 blpop,LIFO模式为 brpop,获取键值
        source, data = rediscli.blpop(["youyuan:items"])

        item = json.loads(data)
        sheet.insert(item)

        try:
            print u"Processing: %(name)s <%(link)s>" % item
        except KeyError:
            print u"Error procesing: %r" % item

if __name__ == '__main__':
    main()

[画像ソースステーションは、セキュリティチェーン機構を有していてもよい、チェーンが失敗したダンプ、それは直接アップロード(IMG-zIMCBq26-1580312342386)ダウン画像を保存することをお勧めします(../画像/ youyuan_mongodb.png)]

MySQLのに保存されています

  1. スタートのMySQL: mysql.server startより多くのプラットフォームが同じではありません)

  2. rootユーザーにログオンします。mysql -uroot -p

  3. データベースを作成しますyouyuancreate database youyuan;

  4. 指定されたデータベースへの切り替え:use youyuan

  5. テーブルの作成beijing_18_25すべてのフィールドとデータ型の名とカラム名を。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zPxZswsZ-1580312342387)(../images/youyuan_mysql2.png)]

  6. 次の手順を実行します。py2 process_youyuan_mysql.py

#process_youyuan_mysql.py

# -*- coding: utf-8 -*-

import json
import redis
import MySQLdb

def main():
    # 指定redis数据库信息
    rediscli = redis.StrictRedis(host='192.168.199.108', port = 6379, db = 0)
    # 指定mysql数据库
    mysqlcli = MySQLdb.connect(host='127.0.0.1', user='power', passwd='xxxxxxx', db = 'youyuan', port=3306, use_unicode=True)

    while True:
        # FIFO模式为 blpop,LIFO模式为 brpop,获取键值
        source, data = rediscli.blpop(["youyuan:items"])
        item = json.loads(data)

        try:
            # 使用cursor()方法获取操作游标
            cur = mysqlcli.cursor()
            # 使用execute方法执行SQL INSERT语句
            cur.execute("INSERT INTO beijing_18_25 (username, crawled, age, spider, header_url, source, pic_urls, monologue, source_url) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s )", [item['username'], item['crawled'], item['age'], item['spider'], item['header_url'], item['source'], item['pic_urls'], item['monologue'], item['source_url']])
            # 提交sql事务
            mysqlcli.commit()
            #关闭本次操作
            cur.close()
            print "inserted %s" % item['source_url']
        except MySQLdb.Error,e:
            print "Mysql Error %d: %s" % (e.args[0], e.args[1])

if __name__ == '__main__':
    main()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jwrRACQo-1580312342388)(../images/youyuan_mysql.png)]

公開された290元の記事 ウォン称賛94 ビュー10000 +

おすすめ

転載: blog.csdn.net/qq_35456045/article/details/104111491