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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • winscp连接虚拟机Linux被拒绝的问题解决方案[通俗易懂]

    winscp连接虚拟机Linux被拒绝的问题解决方案[通俗易懂]winscp连接虚拟机Linux被拒绝的问题解决方案

    2022年9月2日
    7
  • QTreeview custom

    QTreeview custom设定字体virtualQVariantMyModel::data(constQModelIndex&index,introle)const{if(index.isValid()&&role==Qt::ForegroundRole){if(index.column()==2){

    2022年5月22日
    35
  • 控制误差_自动控制原理校正

    控制误差_自动控制原理校正计算机实时控制加工误差的时滞问题.pdf第18卷薯4月J.Hu中azho理ngUU工nniv杰·ofSS学cci.·&TechhVAOpIr.i18IN19o9.021990档计算机实时控制加工误差的时滞问题薯宾鸿赞(机械工程一系)提要本文从计算机控制的原理分析八手…

    2022年10月1日
    0
  • idea配置JDK、Tomcat 环境

    idea配置JDK、Tomcat 环境

    2021年9月30日
    121
  • 图片加载失败显示默认图片

    图片加载失败显示默认图片在页面加载的图片的时候,如果图片不存在或者路径不存在,页面加载图片就会如下图所示。解决方法:在img标签中添加一下标签onerror=”onerror=null;src=’img/a3.jpg'”src中写默认图片地址即可

    2022年5月5日
    182
  • JS中click事件

    JS中click事件今天在写Ajax请求代码时,js代码遇到了一点问题。最后还专门将一部分代码拷贝到webStorm里面测试,花了好久,发现是个坑。先贴一段代码:第一个按钮的点击事件没有任何反应。第二个按钮就会弹出“你好”。原因:这是因为我使用了click这个作为函数的名字,我在这几类中查询了一下,却没有发现click的踪影,而使用click作为函数名,浏览器既不报错,也不提示,真的很坑啊!类似还有open和clos…

    2022年6月13日
    39

发表回复

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

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