爬虫数据保存到MongoDB

时间:2023-02-21 09:01:47


打开MongoDB服务器

打开MongoDB服务器
​​​sudo mongod​

启动MongoDB客户端

#新开终端输入
mongo #启动MongoDB客户端

exit/ctrl+c #退出客户端

查询数据库

show  dbs

使用数据库

use  数据库名字
#如果没有此数据库,需要创建数据库。
#方法:use 数据库名字
#db.名字.insert({key:1})必须插入一个数据,认证一下,否则mongdb默认为空,不认识

查询集合

show  collections   #查询所有集合
use createCollection ('name')   #创建集合

查询所集合元素(文档)

db.colname.find()

pipelines

项目的管道文件,用来处理数据的(保存文档, 或者存入数据库)

from scrapy.conf import settings
import pymongo

class TencentPipeline(object):
def __init__(self):
# 获取setting主机名、端口号和数据库名
host = settings['MONGODB_HOST']
port = settings['MONGODB_PORT']
dbname = settings['MONGODB_DBNAME']

# pymongo.MongoClient(host, port) 创建MongoDB链接
client = pymongo.MongoClient(host=host,port=port)

# 指向指定的数据库
mdb = client[dbname]
# 获取数据库里存放数据的表名
self.post = mdb[settings['MONGODB_DOCNAME']]


def process_item(self, item, spider):
data = dict(item)
# 向指定的表里添加数据
self.post.insert(data)
return item

setting

项目的配置文件

BOT_NAME = 'tenxun'


SPIDER_MODULES = ['tenxun.spiders']
NEWSPIDER_MODULE = 'tenxun.spiders'


# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'tenxun (+http://www.yourdomain.com)'


# Obey robots.txt rules
ROBOTSTXT_OBEY = True

ITEM_PIPELINES = {
# 'tenxun.pipelines.TenxunPipeline': 300,
'tenxun.pipelines.TenxunPipeline': 300,
}


# 主机环回地址
MONGODB_HOST = '127.0.0.1'
# 端口号
MONGODB_PORT = 27017
# 设置数据库名称
MONGODB_DBNAME = 'centent'
# 存放本次数据表的名称
MONGODB_DOCNAME = 'centent_data'