MongoDB 是目前最流行的 NoSQL 数据库之一,使用的数据类型 BSON(类似 JSON)。
下载地址:https://www.mongodb.com/download-center/community
选择版本然后点击下载
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-92J3yHk0-1582473409126)(evernotecid://4A92E144-100E-4A6F-8819-0D9CDA365355/appyinxiangcom/17560272/ENResource/p474)]
安装可以参考网上教程
使用pip快速安装:pip3 install pymongo
测试是否安装成功:import pymongo
常用集合操作–菜鸟教程
1)find()----查询符合条件的所有数据
db.collection.find(查询条件)
(2)find_one()----查询符合跳进的第一条数据
db.collection.find_one(查询条件)
(1)insert_one()----单条插入
db.collection.insert_one({})
(2)insert_many()----多条插入
db.collection.insert_many([{},{}...])
(1)update_one()----修改查询结果的第一条数据
db.colleciton.update_one({查询条件},{$修改器:{修改值}})
(2)update_many()----修改查询结果所有数据
db.colleciton.update_many({查询条件},{$修改器:{修改值}})
(1)delete_one()----删除查询结果的第一条数据
db.colleciton.delete_one(查询条件)
(2)delete_many()----删除查询结果的所有数据
db.colleciton.delete_many(查询条件)
实战 :爬取豆瓣电影TOP250,将电影信息存到MongoDB中
# -*- coding:utf-8 -*-
# author:ck_233 time:2020/2/23
import requests
from bs4 import BeautifulSoup
import re
import json
import pymongo
#模拟浏览器访问
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36'}
#爬取数据结果集
result =[]
# 获取电影详情页链接
def get_deatil_url(url):
req = requests.get(url, headers=headers)
bs = BeautifulSoup(req.text, 'html.parser')
urls = bs.find_all("div", attrs={"class":"info"})
if len(urls) > 0:
for item in urls:
link = item.find("a").get('href')
get_details(link)
# 获取页面详情
def get_details(url):
req = requests.get(url, headers=headers)
bs = BeautifulSoup(req.text, 'html.parser')
try:
# 电影排名(这样写要确定标签的属性或者class值是唯一的能定位到)
rank = bs.find("span", attrs={"class": "top250-no"}).get_text()
# 电影名称
name = bs.find("span", attrs={"property": "v:itemreviewed"}).get_text().split(' ')[0]
# 评分
score = bs.find("strong", attrs={"class":"ll rating_num"}).get_text()
data = {
'rank' : rank,
'name': name,
'score': score
}
print(data)
save_mongo(data)
except Exception as e:
print(e)
## 3.获取的数据保存到mongodb
def save_mongo(result):
#创建数据库需要使用 MongoClient 对象,并且指定连接的 URL 地址和要创建的数据库名。
conn = pymongo.MongoClient(host='localhost', port=27017)
mydb = conn["test"]
mycol = mydb["douban250"]
mycol.insert_one(result)
if __name__ == '__main__':
## 1.#根据列表url可以看出start后面为当前页面第一条的起始序号
for i in range(1,10):
url = 'https://movie.douban.com/top250?start={}&filter='.format(i * 25)
## 2.通过url获取页面详情
get_deatil_url(url)
通过Navicat查看MongoDB数据: