共計 2099 個字符,預計需要花費 6 分鐘才能閱讀完成。
這篇文章主要講解了“分布式爬蟲怎么處理 Redis 里的數據”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“分布式爬蟲怎么處理 Redis 里的數據”吧!
存入 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()
存入 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
#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 里的數據”的內容了,經過本文的學習后,相信大家對分布式爬蟲怎么處理 Redis 里的數據這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!
正文完