MongoDB数据库去重
最近写爬虫的时候遇到了一个问题,爬一个专利网站,主要工作流是先把列表页下所有的专利包括专利号、专利名称、URL放到数据库的一个文档info中,再抽取info中的URL进行爬取详情页,爬取列表页的信息做了一个去重,爬一个就在数据库里查一个。。效率就不提了(另一种我能想到的方法是先用线程池爬取一遍,把单个字典放入一个列表中,再采用set去重,但是线程池似乎没法返回子线程的值?),之后在详情页爬取工作的时候,去重遇到了问题(当然也是set去重),就是,最好是根据专利号来去重,而不是URL,因为详情页的URL可能会有变化,因此就多了如下很多代码:
1 rest_infos = self.obj.get_more_infos()#Mongoengine的查询对象 2 rest_texts = self.obj.get_more_texts()#同上 3 rest_urls = set()#先定义一个集合 4 '''根据查询条件获得的列表页专利信息,包括url和专利号''' 5 patents_infos_urls = [item.patent_url for item in rest_infos]#详情页URL,表1 6 patents_infos_nums = [item.patent_num for item in rest_infos]#详情页专利号,表2 7 dict_infos = dict(map(lambda x,y:[x,y],patents_infos_nums,patents_infos_urls))#合成一个字典1{'专利号':'URL'} 8 '''专利详情页文档下的所有专利信息,包括url和专利号,同上操作''' 9 patents_texts_urls = [item.Patent_url for item in rest_texts] 10 patents_texts_nums = [item.Patent_num for item in rest_texts] 11 dict_texts = dict(map(lambda x,y:[x,y],patents_texts_nums, patents_texts_urls))#字典2 12 for item in (set(dict_infos)-set(patents_texts_nums)):#遍历字典1的键和字典2的键的差集 13 for k,v in dict_infos.items():在列表页的字典里遍历 14 if item == k:#如果查到那个差集里的某个专利名在列表页里面 15 rest_urls.add(v)#就把它添加到最终的URL集合里面,之后针对这个集合里的URL,做线程池爬取
但是感觉这种方法还是太麻烦,因为现在学到的东西还是太少,继续努力。
——————————————————————————
这里还有一个问题要注意,列表页数据库里面的专利号是Int格式,所以详情页的专利号也要存成Int
转载于:https://www.cnblogs.com/yqpy/p/8626696.html
MongoDB数据库去重相关推荐
- mongodb 去重查询 Java,mongodb篇二:mongodb克隆远程数据库,去重查询的命令及对应java语句...
另外附上mongodb eclipse插件地址: http://www.jumperz.net/update/ import java.net.UnknownHostException;import ...
- 二、mongodb数据库系列——聚合操作 索引操作 权限管理
一.mongodb的聚合操作 学习目标 了解 mongodb的聚合原理 掌握 mongdb的管道命令 掌握 mongdb的表达式 1 mongodb的聚合是什么 聚合(aggregate)是基于数据处 ...
- 一、mongodb数据库系列——介绍和安装 简单使用 增删改查
一.Mongodb的介绍和安装 学习目标 了解 非关系型数据库的优势 了解 mongodb的安装 1. mongodb的介绍 1.1 什么是mongodb mongodb 是一个功能最丰富的NoSQL ...
- MongoDB数据库(二):增删查改
MongoDB数据库的增删查改 1.插入数据 语法: db.集合名称.insert(document) db.table_name.insert({name:'gj',gender:1}) db.ta ...
- scrapy爬虫之爬取百度手机助手app信息并保存至mongodb数据库(附源码)
声明: 本文内容仅供学习python爬虫的同学用作学习参考!!! 如有错误,请评论指出,非常感谢!!! 1.使用环境 python 3.8 scrapy 2.5 mongodb pycharm ...
- Mongodb数据库教程
Mongodb数据库 目录 Mongodb数据库 mongodb的介绍 mongodb的安装 mongodb的简单使用 mongodb的增删改查 mongodb的索引操作 mongodb的权限索引 m ...
- Kafka实战 - 06 Kafka消费者:从指定Topic拉取工单处置记录信息并存入MongoDB数据库
文章目录 1. 处置记录表 t_disposal_record 2. kafka 主题和消费者配置 3. 定义一个线程任务 KafkaTask 1. kafka Topic中的数据:KafkaDisp ...
- MongoDB数据库java配置使用
MongoDB RDBMS vs NoSQL RDBMS - 高度组织化结构化数据 - 结构化查询语言(SQL) (SQL) - 数据和关系都存储在单独的表中. - 数据操纵语言,数据定义语言 - 严 ...
- 关于java的mongoDB插入去重以及高并发问题
关于mongoDB插入去重以及高并发问题 最近在项目中碰到过向mongoDB插入数据去重问题.一开始我的想法直接用upsert,我的项目部分代码如下: //使用Upsert进行插入,如果存在就更新,不 ...
- mongodb数据库使用01、基础查询和数据类型介绍
01.windows安装 --下载mongodb数据库,点击安装.配置环境即可 02.基本使用:启动 退出 !!!!!!在此之前一定要配置环境变量 !!!!!!如果之前多次配置其他数据库,这里应该基 ...
最新文章
- FFmpeg在Windows上设置dshow mjpeg编码+libyuv解码显示测试代码
- lua 多条件_【LUA】只需花费你半天时间
- 学术写作利器——LaTeX入门笔记整理(不定期更新,附加使用心得)
- boost::mp11::mp_eval_if_q相关用法的测试程序
- python dict相加_Python合并字典操作时同key的value应该如何相加
- idea 2020和2017下载
- 无语!JDK 8 中的 HashMap 依然会死循环…
- python备份目录下文件夹_python---备份目录和文件
- UVA 10369 - Arctic NetWork (求最小生成树)
- Spark——Spark Project Tungsten深入解析
- Tomcat任意文件读取 文件包含漏洞复现(CVE-2020-1938/CNVD-2020-10487)
- eclipse,wtp配置
- IFD6500_USB转串口驱动
- c语言英语教学大纲,C语言教学大纲.doc
- 说一说关于破解支付宝AR红包的事
- 企业公众号怎么做内容?这四个阶段要做好
- 【OpenGL】(step1)开个窗口
- 成长部落# 编辑推荐 Python 入门学习内容系列
- 谷歌浏览器英文页面翻译成中文<配置方式>
- 快递100快递java_使用快递100 查询链接实现快速查询的示例