MongoDB的安装&爬取数据保存到MongoDB

MongoDB:非关系型数据库,给予Key-Value形式保存数据,与Python的字典格式类似。它能够轻松应对爬虫字段的变化等情况,也可以轻松的横向扩展、分片和集群,非常适合存储大规模爬虫数据。
一.MongoDB的安装
1.下载页面:https://www.mongodb.com/
2.步骤:software——>community Server——>download MongoDB——>选择对应的版本、系统、package(msi)——>Download
在这里插入图片描述
在这里插入图片描述4.安装过程一路next,到左下角出现Install MongoDB Compass(可视化工具)的时候,将前面的勾去掉。不去掉,安装过程较长。后续可重新安装可视化工具。
MongoDB的配置与启动
5.创建数据库存储目录:D:\MongoDB\data
6.启动MongoDB服务器:>cd C:\Program Files\MongoDB\Server\4.2\bin(注意自己安装路径)
>mongod.exe --dbpath=D:\MongoDB\data
>mongod.exe --dbpath=D:\MongDB\data --logpath=D:\MongoDB\logs\mongodb.log
7.MongoDB的可视化管理
Robo 3T:MongoDB的可视化工具
下载链接:https://robomongo.org/
在这里插入图片描述
8.下载安装完成后,打开MongoDB服务器,然后启动Robo 3T,系统打开窗口并弹出MongDB Connection对话框。
在配置对话框中输入连接名称,依次单击save和connect,就连接到了MongoDB服务器。连接成功后,就可在右侧看到MongoDB数据库的文件目录。
在这里插入图片描述到这里MongoDB就安装好了!

现在做一个实例爬取数据保存到MongoDB
二.Scrapy链家经纪人数据爬虫实现
1.建立项目,使用crawl模板生成spider文件

>scrapy startproject lianjia01
>cd lianjia01
>scrapy genspider lianjia m.lianjia.com

2.定义item.py 这里只提取经纪人姓名、负责区域

name = scrapy.Field()
region = scrapy.Field()
tran_num = scrapy.Field()

3.编写spider文件,导入必须的包和类、重写start_urls:

import scrapy
from lianjia01.items import Lianjia01Item


class LianjiaSpider(scrapy.Spider):
    name = 'lianjia'
    allowed_domains = ['m.lianjia.com']
    start_urls = ['https://m.lianjia.com/bj/jingjiren/ao22pg' + str(x) for x in range(1,4)]

4.编写spider文件,编写parse方法

    def parse(self, response):
        agentlist = response.xpath('//*[@class="jingjiren-list-item"]')
        for agent in agentlist:
            item = Lianjia01Item()
            item['name'] = agent.xpath('div/div/div/div[2]/div[1]/span/text()').extract_first()
            item['region'] = agent.xpath('div/div/div/div[2]/p/text()').extract_first()
            item['tran_num'] = agent.xpath('div/div/div/div[2]/div[3]/div[1]/span/text()').extract_first()
            print("经纪人姓名:",item['name'])
            print("经纪人所负责区域:",item['region'])
            print("经纪人历史成交量为:",item['tran_num'])
            yield item

注意:不加yield item爬取出来的数据无法加载到MongoDB数据库
在这里插入图片描述
注意要修改xpath
4.编写settings.py文件

USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.14 Safari/537.36'
ROBOTSTXT_OBEY = False
COOKIES_ENABLED = False

5.执行代码scrapy crawl lianjia
在这里插入图片描述
成功爬取数据!
三 、设置链家网爬虫pipeline

1.在python中使用MongoDB,需要安装MongoDB驱动

>pip install pymongo

2.编写pipelines.py

import pymongo
from pymongo import MongoClient
class Lianjia01Pipeline(object):
    #在open_spider方法中连接MongoDB,创建数据库和集合,也可以在__init__初始化方法中处理这些操作
    def open_spider(self):
        self.db = MongoClient('localhost',27017).lianjia_db
        self.collection = self.db.lianjia_collection
    def process_item(self, item, spider):
        #把Item转化成字典方式,然后添加数据
        self.collection.insert_one(dict(item))
        return item

3.在settings中启用pipeline(去掉注释)

ITEM_PIPELINES = {
    'lianjia01.pipelines.Lianjia01Pipeline': 300,
}

4.运行代码scrapy crawl lianjia
这个时候报了一个错
在这里插入图片描述
覆盖方法,spider方法没有用到都要加上
在这里插入图片描述
再次运行,刷新数据库
在这里插入图片描述到这里就已经把爬取的数据保存到了MongoDB中啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值