热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一日二技:MongoDB与Scrapy的小技巧各一个

MongoDB向数组插入不重复的数据;Scrapy使用

摄影:产品经理
红烧肉

今天我们来讲两个小技巧。

如何更新 MongoDB 中的一个数组

我们知道,如果想给 MongoDB 的一条文档增加一个字段,我们可以使用update_one
方法:

import pymongo

handler = pymongo.MongoClient().db.col
handler.update_one({'name''kingname'}, {'$set': {'新的字段名''新的字段值'}})

但如果有一个字段是数组,我想向这个数组里面添加一个元素。并且,如果这个元素之前就已经在这个数组中了,就什么也不做,只要之前不存在时才添加。

这个时候,我们就可以使用$addToSet
操作符来实现这个功能。

这个操作符的语法为:

handler.update_one({'name''kingname'}, {'$addToSet': {'字段名''要插入的元素'}})

我们来看一个例子。

例如对于如图所示的一条文档:

执行代码:

handler.update_one({'name''kingname'}, {'$addToSet': {'excellent''Javascript'}})

运行以后,数组excellent
变为如下图所示:

如果插入一条已经存在的数据,那么这个数组就不会变化。例如:

handler.update_one({'name''kingname'}, {'$addToSet': {'excellent''Python'}})

如何使用参数给 Scrapy 爬虫增加属性

在Scrapy 项目中,我们有时候需要在启动爬虫的时候,传入一些参数,从而让一份代码执行不同的逻辑。这个时候,有一个非常方便的方法,就是使用-a
参数。它的语法为:

scrapy crawl 爬虫名 -a 参数1 -a 参数2 -a 参数3

那么,传入的这些参数,在爬虫里面怎么使用呢?其实很简单,你不需要做任何额外的配置,直接在爬虫里面通过self.参数名
就可以调用了。例如下面这个爬虫:

大家可以看到,PyCharm 给两个属性self.body_name
self.age_from_cmdline
标上了黄色的背景,这是因为PyCharm 找不到这两个属性是在哪里定义的。

但没有关系,我们启动 Scrapy 爬虫的时候,使用-a
参数传递进去就好了:

scrapy crawl example -a body_name=kingname -a age_from_cmdline=28

运行效果如下图所示:

可以看到,这个接口成功接收到了这两个参数,并且把它显示了出来。

未闻 Code·知识星球开放啦!

  • 每周一场直播分享

  • 一对一答疑

  • 面试经验分享

  • 职业生涯咨询

  • ……






未闻 Code技术交流群开放啦!群里既有国内一二线大厂在职员工,也有国内外高校在读学生,既有十多年码龄的编程老鸟,也有中小学刚刚入门的新人,学习氛围良好!想入群的同学,请添加我的微信“mekingname”,备注“粉丝群”(谢绝广告党,非诚勿扰!)~









推荐阅读
  • 如何用Python在MongoDB中导入JSON文件? ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文目录一览:1、python语言主要是做什么的 ... [详细]
  • 大部分情况下爬取的数据特别灵活,不一定只有指定的几个字段数据,这时候就需要将数据存储在非关系型数据库中了,MongoDB是由C语言编写的& ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 手把手教你使用GraphPad Prism和Excel绘制回归分析结果的森林图
    本文介绍了使用GraphPad Prism和Excel绘制回归分析结果的森林图的方法。通过展示森林图,可以更加直观地将回归分析结果可视化。GraphPad Prism是一款专门为医学专业人士设计的绘图软件,同时也兼顾统计分析的功能,操作便捷,可以帮助科研人员轻松绘制出高质量的专业图形。文章以一篇发表在JACC杂志上的研究为例,利用其中的多因素回归分析结果来绘制森林图。通过本文的指导,读者可以学会如何使用GraphPad Prism和Excel绘制回归分析结果的森林图。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 本文介绍了在Windows系统下安装Python、setuptools、pip和virtualenv的步骤,以及安装过程中需要注意的事项。详细介绍了Python2.7.4和Python3.3.2的安装路径,以及如何使用easy_install安装setuptools。同时提醒用户在安装完setuptools后,需要继续安装pip,并注意不要将Python的目录添加到系统的环境变量中。最后,还介绍了通过下载ez_setup.py来安装setuptools的方法。 ... [详细]
  • Python爬虫使用MongoDB 提示No connection adapters were found for如何解决? ... [详细]
  • 背景最近项目中用到了mongodb,并且用python的pymongo包操作。本文就把目前遇到的问题和学习经历做个小结,方便日后查询。Mongodb启动安装mongodbhttp ... [详细]
  • 怎么用Python来统计知识星球打卡作业
    本篇内容主要讲解“怎么用Python来统计知识星球打卡作业”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大 ... [详细]
  • 今天继续自制信息检索网站的第二步,简单的分析一下掘金的数据。在上次第一步得到数据后通过简单的数据清洗可视化来看一看掘金。本次使用的是jupyternotebook用到 ... [详细]
  • Python3爬虫实战:Appium 爬取微信朋友圈[python爬虫实战]
    本节我们以Android平台为例,实现抓取微信朋友圈的动态信息。动态信息包括好友昵称、正文、发布日期。其中发布日期还需要进行转换,如日期显示为1小时前,则时间转换为今天,最后动态信 ... [详细]
author-avatar
不语皓月
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有