存入MongoDB
1.启动MongoDB数据库:sudo mongod
2.执行下面程序:py2 process_youyuan_mongodb.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# 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() |
存入 MySQL
1.启动mysql:mysql.server start(更平台不一样)
2.登录到root用户:mysql -uroot -p
3.创建数据库youyuan:create database youyuan;
4.切换到指定数据库:use youyuan
5.创建表beijing_18_25以及所有字段的列名和数据类型。
6.执行下面程序:py2 process_youyuan_mysql.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#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() |
总结
以上所述是小编给大家介绍的分布式爬虫处理Redis里的数据操作步骤,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!