接上一篇的,发现爬斗鱼主播信息存入Mongodb数据库后,发现很多重复的数据,毕竟斗鱼不可能有这么多的主播,所以很多页是有重复的主播房间的。

查了一下怎么去重,发现比较麻烦,与其存入重复的数据后面再去重,还不如在存入数据库的时候就检查,不去存入重复的数据,这样就避免了后期再去做去重工作。于是改动如下:

#-*- coding:utf-8 -*-
#_author:John
#date:2018/10/25 0:07
#softwave: PyCharm
import requests
import json
from multiprocessing import Pool
import pymongo
import datetimeclient = pymongo.MongoClient('localhost')
db = client['douyu']
cur_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M')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'],'类别': item['c2name'],'房间号': item['rid'],'时间': cur_time}# 不保存相同时间相同主播名的记录if db['host_info'].update({'主播': data['主播'], '时间': 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, 201)])

这个方法如果碰到基础数据量很大的情况下相当缓慢,这里是我的一个解决方案

https://www.cnblogs.com/lkd8477604/p/10201137.html

如果是已经存入数据库的数据,就需要重新遍历去重后逐条存入新的数据库中。虽然用了多线程,数据量大的话速度还是挺慢的。

#-*- coding:utf-8 -*-
#_author:John
#date:2018/12/31 14:34
#softwave: PyCharm
import pymongo
from multiprocessing import Poolclient = pymongo.MongoClient('localhost')
db = client['douyu']def save_to_mongo(data):db['host_info_new'].update({'主播': data['主播'], '时间': data['时间']}, {'$set': data}, True)print(data)
if __name__ == '__main__':pool = Pool()pool.map(save_to_mongo, [data for data in db['host_info_old'].find()])

转载于:https://www.cnblogs.com/lkd8477604/p/9848958.html

Mongodb去除重复的数据,pymongo去重相关推荐

  1. mongodb去除重复的数据(二)

    前天因为工作需要,开始着手对数据库中两千多万的数据中其中一个字段重复的数据进行去重. 原本使用一些测试的数据测试后,前天写的那个方法是可行的,但是当面对这个两千万的真实数据时,我却发现这方法有些不顶用 ...

  2. sql语句如何去除重复的数据

    有重复数据主要有一下几种情况: 1.存在两条完全相同的纪录 这是最简单的一种情况,用关键字distinct就可以去掉 example: select distinct * from table(表名) ...

  3. MySql数据库去除重复的数据

    今天群内有群友提出了一个问题,就是MySql中删除重复数据的问题,然后回答了一下,发现正好接触到了之前可能没关注的一点儿小知识,在此做下简要记录(哦对,昨天晚上在试用腾讯云数据库的时候还遇到一个问题, ...

  4. php去除重复的数据保留一条,mysql查找删除重复数据并只保留一条实例详解

    有这样一张表,表数据及结果如下: school_id school_name total_student test_takers 1239 Abraham Lincoln High School 55 ...

  5. sql去除某一字段重复的数据(去重)

    已知一个person表,表中数据如下:需求是删除email相同的数据. 该问题是传统的数据去重问题,可以采用row_number() over进行排序筛选,这里不进行详细介绍. 再此介绍一个利用笛卡儿 ...

  6. mongodb去除重复的值

    今天使用mongodb发现某一字段有很多重复的值,需要根据该字段将重复的值删除,保留一份,查了很多资料,写出了一套去重代码记录下来. 首先应该将数据库表备份,这是所有数据处理步骤的最重要一步,谁也不知 ...

  7. Python 去除重复行数据

    Python学习笔记 --文件去重 1.所有字段相同去重 df = pd.read_csv(file_in) df = df.drop_duplicates(subset=None, keep='fi ...

  8. sql中去除重复的数据

    总的思路就是先找出表中重复数据中的一条数据,插入临时表中,删除所有的重复数据,然后再将临时表中的数据插入表中.所以重点是如何找出重复数据中的一条数据,有三种情况 1.重复数据完全一样,使用distin ...

  9. oracle 两表去除重复的数据,Oracle数据库删除两表中相同数据的方法

    在Oracle数据库中删除两表中相同数据的方法是用到in语句,本文通过实例来讲解删除两表中相同数据的方法. 软件环境: 1.Windows NT4.0+ORACLE 8.0.4. 2.Oracle安装 ...

最新文章

  1. linux 安装redis4.0.6,Redis(4.0.6)在Linux(CentOS7)下的安装
  2. 定时自动按键软件_[按键精灵手机版教程]QUI界面也可以如此炫酷
  3. socket有关的一些扩展函数介绍
  4. c++ -- 构造函数与析构函数
  5. Boost : to_string_stub用法的测试程序
  6. 减少到处衍生的实体类
  7. 使用C#代码部署SharePoint 2013开发包简单总结(一)
  8. STL之template类模板
  9. [转载] python创建集合set()_python 之集合{}(Set)
  10. php 判断昨天_PHP 判断时间在今天、昨天、前天、几天前几点
  11. TrueCrypt使用方法及详细教程介绍
  12. C# 固高运动控制卡插补
  13. 偏微分方程数值解法python_微分方程数值方法和偏微分方程有什么区别吗?
  14. 北大200页元宇宙报告!六大板块,看20家巨头的元宇宙布局 | 智东西内参
  15. 【Devops】【docker】【CI/CD】jenkins 清除工作空间报错Error: Wipe Out Workspace blocked by SCM...
  16. 以太网交换机和路由器的区别(转载)
  17. STM32脱机烧录器源文件、离线烧录器 制作资料 源文件
  18. Java8 JDK8
  19. Python 错题本
  20. ​2020年,又一波技术类书籍推荐,不能错过哟~

热门文章

  1. Cadence Allegro 导出Gerber-PCB加工文件SMT钢网制作文件图文教程及视频演示
  2. 高级选项修复计算机,Win7高级启动选项修复计算机的方法(图文)
  3. 【ubuntu18.04系统安装】DELL戴尔外星人M15R2-双系统
  4. python大数据工程师证书_大数据工程师需要学习哪些?
  5. PowerDesgier让id自增及破解、下载安装注意事项
  6. 秦汉时期的中国和同时的世界
  7. 亚马逊直邮来了:中国电商谁在颤抖?
  8. 【产品】产品认证项目
  9. SpringBoot实现SpringTask调度任务---实现间隔调度与CRON调度处理
  10. 闪闪发光的文字特效代码