Mongodb去除重復的數據,pymongo去重
阿新 • • 發佈:2018-10-25
ESS mongo pda 可能 ajax info one __main__ mat
接上一篇的,發現爬鬥魚主播信息存入Mongodb數據庫後,發現很多重復的數據,畢竟鬥魚不可能有這麽多的主播,所以很多頁是有重復的主播房間的。
查了一下怎麽去重,發現比較麻煩,與其存入重復的數據後面再去重,還不如在存入數據庫的時候就檢查,不去存入重復的數據,這樣就避免了後期再去做去重工作。於是改動如下:
#-*- coding:utf-8 -*- #_author:John #date:2018/10/25 0:07 #softwave: PyCharm import requests import json from multiprocessing import Pool import pymongo client= pymongo.MongoClient(‘localhost‘) db = client[‘douyu‘] def single_page_info(page): respones = requests.get(‘https://www.douyu.com/gapi/rkc/directory/0_0/{}‘.format(page)) datas = json.loads(respones.text) items = datas[‘data‘][‘rl‘] for item in items: data = { ‘標題‘: item[‘rn‘], ‘主播‘: item[‘nn‘], ‘人氣‘ : item[‘ol‘], } if db[‘ajax_spider_quchong‘].update({‘主播‘:data[‘主播‘]}, {‘$set‘: data}, True): print(‘Save to Mongo, {}‘.format(data)) else: print(‘Save to Mong fail, {}‘.format(data)) print(‘已經完成第{}頁‘.format(page)) if __name__ == ‘__main__‘: pool = Pool() #多線程抓200頁 pool.map(single_page_info, [page for page in range(1, 200)])
Mongodb去除重復的數據,pymongo去重