当前位置:优草派 > 问答 > Python问答

python爬虫数据保存到mongoDB的实例方法

标签: Python  python爬虫  数据爬虫  作者: hejingfeng

回答:

在数据爬取过程中,数据保存是一个非常关键的环节。MongoDB作为一个非关系型数据库,其具有高可扩展性、高性能、高可用性、高灵活性等特点,成为了数据爬取中常用的数据库之一。本文将结合实例,介绍如何将Python爬虫数据保存到MongoDB数据库中。

一、安装MongoDB

在开始之前,需要先安装MongoDB数据库。可以在官网下载安装包进行安装,也可以使用命令行进行安装。

二、安装pymongo

pymongo是Python操作MongoDB的库,需要先安装才能进行操作。可以使用pip命令进行安装。

pip install pymongo

三、连接MongoDB

连接MongoDB的方法有两种:本地连接和远程连接。本地连接是指在本地计算机上运行MongoDB数据库,远程连接是指连接远程MongoDB数据库。

本地连接:

import pymongo

client = pymongo.MongoClient("mongodb://localhost:27017/")

远程连接:

import pymongo

client = pymongo.MongoClient("mongodb://用户名:密码@IP地址:端口/数据库名")

四、创建数据库和集合

在MongoDB中,一个数据库可以包含多个集合,一个集合可以包含多个文档。在Python中,可以通过以下代码创建数据库和集合:

db = client["mydatabase"]

col = db["customers"]

五、插入数据

插入数据是将爬取到的数据保存到MongoDB中的重要步骤。在Python中,可以使用insert_one()或insert_many()方法将数据插入到MongoDB中。

insert_one()方法:

mydict = { "name": "John", "address": "Highway 37" }

x = col.insert_one(mydict)

print(x.inserted_id)

insert_many()方法:

mylist = [

{ "name": "Amy", "address": "Apple st 652"},

{ "name": "Hannah", "address": "Mountain 21"},

{ "name": "Michael", "address": "Valley 345"},

{ "name": "Sandy", "address": "Ocean blvd 2"},

{ "name": "Betty", "address": "Green Grass 1"},

{ "name": "Richard", "address": "Sky st 331"}

]

x = col.insert_many(mylist)

print(x.inserted_ids)

六、查询数据

在MongoDB中,可以使用find()方法查询数据。在Python中,可以使用以下代码查询数据:

for x in col.find():

print(x)

七、更新数据

在MongoDB中,可以使用update_one()或update_many()方法更新数据。在Python中,可以使用以下代码更新数据:

update_one()方法:

myquery = { "address": "Valley 345" }

newvalues = { "$set": { "address": "Canyon 123" } }

col.update_one(myquery, newvalues)

update_many()方法:

myquery = { "address": { "$regex": "^S" } }

newvalues = { "$set": { "name": "Minnie" } }

x = col.update_many(myquery, newvalues)

print(x.modified_count, "documents updated.")

八、删除数据

在MongoDB中,可以使用delete_one()或delete_many()方法删除数据。在Python中,可以使用以下代码删除数据:

delete_one()方法:

myquery = { "address": "Mountain 21" }

col.delete_one(myquery)

delete_many()方法:

myquery = { "address": {"$regex": "^S"} }

x = col.delete_many(myquery)

print(x.deleted_count, " documents deleted.")

九、

TOP 10
  • 周排行
  • 月排行