Python爬虫笔记——操作MongoDB数据库(pymongo)

一、MongoDB

MongoDB 是目前最流行的 NoSQL 数据库之一,使用的数据类型 BSON(类似 JSON)。
下载地址:https://www.mongodb.com/download-center/community
选择版本然后点击下载
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-92J3yHk0-1582473409126)(evernotecid://4A92E144-100E-4A6F-8819-0D9CDA365355/appyinxiangcom/17560272/ENResource/p474)]
安装可以参考网上教程

二、pymongo库安装

使用pip快速安装:pip3 install pymongo
测试是否安装成功:import pymongo

三、python连接使用

常用集合操作–菜鸟教程

  1. 查询
1)find()----查询符合条件的所有数据
    db.collection.find(查询条件)
(2)find_one()----查询符合跳进的第一条数据
    db.collection.find_one(查询条件)
  1. 新增
(1)insert_one()----单条插入
    db.collection.insert_one({})
(2)insert_many()----多条插入
    db.collection.insert_many([{},{}...])
  1. 修改
(1)update_one()----修改查询结果的第一条数据
    db.colleciton.update_one({查询条件},{$修改器:{修改值}})
(2)update_many()----修改查询结果所有数据
    db.colleciton.update_many({查询条件},{$修改器:{修改值}})
  1. 删除
(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数据:

你可能感兴趣的:(Python)