在scrapy中将数据保存到mongodb中

利用item pipeline可以实现将数据存入数据库的操作,可以创建一个关于数据库的item pipeline

需要在类属性中定义两个常量

  DB_URL:数据库的URL地址

  DB_NAME:数据库的名字

在Spider爬取的整个过程中,数据库的连接和关闭操作只需要进行一次就可以,应该在开始处理之前就要连接数据库,并在处理完所有数据之后就关闭数据库。所以需要在open_spider和close_spider中定义数据库的连接和关闭操作

  在process_item中实现MongoDB的写入操作,使用self.db和spider.name获得一个集合,然后就是将数据插入到这个集合中,集合对象的insert_one插入的是一个字典对象,不能传入item对象,所以在调用之前要对这个item对象进行判断,如果是item对象就要转成字典

如果要是想通过配置文件来进行配:

  增加了类方法from_crawler(cls, cralwer),代替了在类属性中定义的DB_URL,DB_NAME

  如果是一个item pipeline定一个from_crawler方法,scrapy就会调用这个方法来创建item pipeline对象。这个方法有两个参数

    cls

      item pipeline类的对象,这里指的是当前这个item pipeline对象

    crawler

     Crawler是scrapy中的一个核心的对象,可以通过crawler的settings属性访问配置文件

  在from_crawler中,读取配置文件中的MONGO_DB_URL和MONGO_DB_NAME(不存在使用默认值),赋值给cls的属性,也就是当前item pipeline的对象

  其它的读取关闭没有发生任何的改变,读取关闭都是正常的操作

原文地址:https://www.cnblogs.com/tulintao/p/11702777.html

时间: 2024-08-29 10:01:44

在scrapy中将数据保存到mongodb中的相关文章

1.scrapy爬取的数据保存到es中

先建立es的mapping,也就是建立在es中建立一个空的Index,代码如下:执行后就会在es建lagou 这个index. from datetime import datetime from elasticsearch_dsl import DocType, Date, Nested, Boolean, \ analyzer, InnerDoc, Completion, Keyword, Text, Integer from elasticsearch_dsl.connections im

Python获取个人网站的所有课程下载链接和密码,并保存到Mongodb中

1.获取网站课程的分类地址: ''' 爬取屌丝首页,获取每个分类名称和链接 ''' import requests from lxml import etree headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36', } def get_class_data(): list_dat

Excel文件数据保存到SQL中

1.获取DataTable /// <summary> /// 查询Excel文件中的数据 /// </summary> /// <param name="strPath">文件路径</param> /// <param name="sheetName">工作表名</param> /// <returns>DataTable</returns> public DataTa

Scrapy 爬虫实例 抓取豆瓣小组信息并保存到mongodb中

这个框架关注了很久,但是直到最近空了才仔细的看了下 这里我用的是scrapy0.24版本 先来个成品好感受这个框架带来的便捷性,等这段时间慢慢整理下思绪再把最近学到的关于此框架的知识一一更新到博客来. 先说明下这个玩具爬虫的目的 能够将种子URL页面当中的小组进行爬取 并分析出有关联的小组连接 以及小组的组员人数 和组名等信息 出来的数据大概是这样的 {    'RelativeGroups': [u'http://www.douban.com/group/10127/',           

Python scrapy爬虫数据保存到MySQL数据库

除将爬取到的信息写入文件中之外,程序也可通过修改 Pipeline 文件将数据保存到数据库中.为了使用数据库来保存爬取到的信息,在 MySQL 的 python 数据库中执行如下 SQL 语句来创建 job_inf 数据表: CREATE TABLE job inf ( id INT (11) NOT NULL AUTO_INCREMENT PRIMARY KEY, title VARCHAR (255), salary VARCHAR (255), company VARCHAR (255),

PHP操作:将数据库中的数据保存到Word中。

1.首先定义了一个word类 <?php class word { function start() { ob_start(); ob_start — 打开输出控制缓冲 } function save($path) { $data = ob_get_contents(); ob_get_contents — 返回输出缓冲区的内容 ob_end_clean(); ob_end_clean — 清空(擦除)缓冲区并关闭输出缓冲 $this->wirtetoword($path,$data); }

如何将MATLAB数据保存到Excel中

最近做仿真的时候需要用到这个功能,所以网上搜了一下,找到一个可行的方法. ----------------------------------------------------------------------------- excel = actxserver('excel.application');  % 打开一个excel操作对象set(excel,'visible',2);                   % 使excel对象可见,即打开excel窗口, % 实际应用时设置其为

将添加的表格框中数据保存到_data中,

//找到行数将修改的数据传到_data的FISH_NAME中$('table').on('click','.drop-item',function(){ var _data = self.FishConfigList(); console.log(_data); var liText = $(this).text(); var indexi = $(this).closest('tr').index(); _data[indexi].FISH_NAME =liText; return _data

使用lxml的css选择器用法爬取奇书网并保存到mongoDB中

import requests from lxml import etree from fake_useragent import UserAgent import pymongo class QiShuSpider(object): def __init__(self): self.base_url="https://www.qisuu.la/soft/sort01/" self.headers={ "User-Agent":UserAgent().random,