ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

scrapy把数据保存到mongodb

2021-11-02 05:00:07  阅读:152  来源: 互联网

标签:MONGO settings mongodb self 保存 item scrapy weiboItem


scrapy数据存进mongodb

第一步,settings.py添加

ITEM_PIPELINES = {
   # 'scrapy_runklist.pipelines.ScrapyRunklistPipeline': 300,
   'scrapy_runklist.pipelines.ScrapyWeiBoPipeline': 300,
}

# mongodb配置
MONGO_HOST = "127.0.0.1"  # 主机IP
MONGO_PORT = 27017  # 端口号
MONGO_DB = "ranklist"  # 库名
MONGO_COLL_WEIBO = "weibo"  # collection名
# MONGO_USER = "simple" #用户名
# MONGO_PSW = "test" #用户密码

第二步,item.py添加

class WeiboItem(scrapy.Item):
    id = scrapy.Field()
    word = scrapy.Field()
    url = scrapy.Field()

第三步,spider.py添加

    def parse(self, response):
        json_data = response.json()
        num = 0
        for i in json_data["data"]["realtime"]:
            weiboItem = WeiboItem()
            if num == 10:
                break
            weiboItem["id"] = num
            weiboItem["word"] = i["word"]
            url = "https://s.weibo.com/weibo?q=%23{}%23".format(i["word"])
            weiboItem["url"] = url
            num += 1
            yield weiboItem

第四步,pipline.py添加

import pymongo
from scrapy.utils.project import get_project_settings
settings = get_project_settings()

class ScrapyWeiBoPipeline:

    def __init__(self):
        # 链接数据库
        client = pymongo.MongoClient(host=settings['MONGO_HOST'], port=settings['MONGO_PORT'])
        self.db = client[settings['MONGO_DB']]  # 获得数据库的句柄
        self.coll = self.db[settings['MONGO_COLL_WEIBO']]  # 获得collection的句柄
        # 数据库登录需要帐号密码的话
        # self.db.authenticate(settings['MONGO_USER'], settings['MONGO_PSW'])

    def process_item(self, item, spider):
        print("pipline item ==== ", item)
        postItem = dict(item)  # 把item转化成字典形式
        self.coll.insert(postItem)  # 向数据库插入一条记录
        return item  # 会在控制台输出原item数据,可以选择不写

标签:MONGO,settings,mongodb,self,保存,item,scrapy,weiboItem
来源: https://www.cnblogs.com/andy0816/p/15497047.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有