mongodb数据库去重命名_数据库数据去重语句

mongodb数据库去重命名_数据库数据去重语句  最近写爬虫的时候遇到了一个问题,爬一个专利网站,主要工作流是先把列表页下所有的专利包括专利号、专利名称、URL放到数据库的一个文档info中,再抽取info中的URL进行爬取详情页,爬取列表页的信息做了一个去重,爬一个就在数据库里查一个。。效率就不提了(另一种我能想到的方法是先用线程池爬取一遍,把单个字典放入一个列表中,再采用set去重,但是线程池似乎没法返回子线程的值?),之后在详情页爬取工…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

  最近写爬虫的时候遇到了一个问题,爬一个专利网站,主要工作流是先把列表页下所有的专利包括专利号、专利名称、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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187290.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 通过Java实现求水仙花数「建议收藏」

    通过Java实现求水仙花数「建议收藏」用户输入一个数,判断是否是”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。程序同用户交互是通过Scanner来实现的,jdk中封装了一个类Scanner,该类的职责就是接收键盘的输入值,并保存到程序的变量中,体现了程序和用户的交互功能,适合新手学习。

    2022年7月8日
  • mysql的建表语句_mysql如何查询建表语句

    mysql的建表语句_mysql如何查询建表语句mysql建表语句mysql安装教程见博客:MySQL7.7.25图文安装教程(Win10)本篇博客以学生表、课程表以及学生-课程表为例,讲解mysql常用的建表语句。1.学生表Sno(学号)Sname(姓名)Sex(性别)Sage(年龄)Sdept(系)201215121李勇男20CS201215122刘晨女19CS201215…

    2022年9月8日
  • 损失函数loss大大总结_logloss 损失函数

    损失函数loss大大总结_logloss 损失函数1.损失函数:损失函数(lossfunction)是用来评测模型的预测值f(x)与真实值Y的相似程度,损失函数越小,就代表模型的鲁棒性越好,损失函数指导模型学习。根据损失函数来做反向传播修改模型参数。机器学习的目的就是学习一组参数,使得预测值与真值无限接近。2.softmaxloss:它是损失函数的一种,是softmax和cross-entropyloss组合而成的损失函数。先看softmax,其函数形式如下:其中zj就是某个神经网络全连…

    2022年4月19日
  • python基础(2)字符串常用方法「建议收藏」

    python基础(2)字符串常用方法「建议收藏」python字符串常用方法find(sub[,start[,end]])在索引start和end之间查找字符串sub​找到,则返回最左端的索引值,未找到,则返回-1​start和end都可

    2022年7月29日
  • 02 、Solr7.3.1 在Win10平台下使用Tomcat9的部署及配置

    02 、Solr7.3.1 在Win10平台下使用Tomcat9的部署及配置

    2021年8月23日
  • np.astype()

    np.astype()1.作用:就是转换numpy数组的数据类型举个例子arr=np.arange((10))print(arr,arr.dtype,sep=”\n”)===================================[0123456789]int32#可以看到,他的数据类型为int32np.astype()arr=arr.astype(“f…

    2022年6月10日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号