1.数据库存储概述
爬虫的数据存储方式:
1.存储到本地
2.存储到数据库(常见的数据库:MySQL和MangoDB)
2.MangDB数据库概述
MangDB数据库功能:
1.模式自由:可将不同结构的文档存储在同一个数据库中
2. 面向集合的存储:适合JSON文件风格的形式
3.完整的索引支持
4.复制和高可用性
5.自动分片
6.丰富的查询
7.快速就地更新
8.高效的传统存储方式
2.1MangDB数据在Wins系统下的安装
-
下载官网:https://www.mongodb.com/download-center#community
-
安装:使用下图【修改安装路径】
3.添加路径: Path【F:\MangDB4.4.8\bin】
4.创建数据库文件的存放位置
在安装路径MangDB4.4.8\data文件夹中新建子文件夹db【F:\MangDB4.4.8\data\db】
5.配置本地Windows mongodb服务【实现开机自启动】
在MangDB4.4.8安装根目录下新建配置文件【mongo.config】,其中该文件位置同bin目录同级
# 数据库路径
mongodb.config配置内容如下:
dbpath=F:\MangDB4.4.8\data\db
# 日志输出文件
logpath=F:\MangDB4.4.8\log\mongod.log
# 错误日志是否追加
#logappend=true
# 启用日志文件
journal=true
# 过滤无用日志
quiet=true
port=27017
6.运行代码:【管理员方式运行cmd】
Win+R—>cmd—>:
mongod --dbpath F:\MangDB4.4.8\data\db
同时在浏览器中输入:http://localhost:27017
7.安装MongoDB服务:
以管理员身份打开cmd,输入:
mongod --dbpath "F:\MangDB4.4.8\data\db" --logpath "F:\MangDB4.4.8\log\mongod.log" --install --serviceName "MongoDB"
1.若中间出现问题,则必须先删除服务:sc delete MongoDB,之后再输入上述命令
2.Win+R 输入:services.msc查看MongoDB服务是否开启
常用命令:
启动MongoDB服务器:net start MongoDB
若想关闭:net stop MongoDB
如果下次使用:
1.使用管理员方式打开cmd
2.输入net start MongoDB
3.使用。如:show dbs
3.实例
安装: pip install pymongo
import requests
from time import sleep
from pymongo import *
from lxml import etree
from pymongo import MongoClient
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36'
}
client = MongoClient() #创建连接
db = client.spider #访问数据库spider #如果没有spider数据库,则会自动创建该数据库
collection = db.moive250 #创建集合 集合在MySQL中对应的是table
def douban(url):
page_text = requests.get(url=url,headers=header).text
#解析具体网页
tree = etree.HTML(page_text)
li_list = tree.xpath('//*[@id="content"]/div/div[1]/ol/li')
# print(li_list)
for li in li_list:
page_url = li.xpath('./div/div[2]/div[1]/a/@href')[0]
#详情页面处理
page_text = requests.get(url=page_url,headers=header).text
trees = etree.HTML(page_text)
#电影名称
movie_name = trees.xpath('//*[@id="content"]/h1/span[1]/text()')[0]
#豆瓣评分:
movie_score = trees.xpath('//*[@id="interest_sectl"]/div[1]/div[2]/strong/text()')[0]
dic = {
'movie_name':movie_name,
'movie_score':movie_score,
'movie_url':page_url,
}
collection.insert_one(dic)
print(dic)
def main():
for i in range(0,2):
full_url = 'https://movie.douban.com/top250?start=' + str(i*25)
print('完整的url:',full_url)
douban(full_url)
# 根据条件查找数据库MongoDB
cursor = collection.find({'movie_score':'9.3'})
for doc in cursor:
print(doc)
if __name__ == '__main__':
main()
print('完成!!!')
MongoDB使用步骤:
1.导包:from pymongo import MongoClient
2.创建对象:client = MongoClient() #client = MongoClient(‘localhost’,27017)
3.创建数据库:db = client.spyder #spyder为数据库名称
4.创建集合:collection = db.insert_one(data_dict)