python爬虫之scrapy的pipeline的使用
scrapy的pipeline是一个非常重要的模块,主要作用是将return的items写入到数据库、文件等持久化模块,下面我们就简单的了解一下pipelines的用法。
案例一:
items池
- class ZhihuuserItem(scrapy.Item):
- # define the fields for your item here like:
- # name = scrapy.Field()
- id = scrapy.Field()
- name = scrapy.Field()
- avatar_url = scrapy.Field()
- headline = scrapy.Field()
- description = scrapy.Field()
- url = scrapy.Field()
- url_token = scrapy.Field()
- gender = scrapy.Field()
- cover_url = scrapy.Field()
- type = scrapy.Field()
- badge = scrapy.Field()
- answer_count = scrapy.Field()
- articles_count = scrapy.Field()
- commercial_question = scrapy.Field()
- favorite_count = scrapy.Field()
- favorited_count = scrapy.Field()
- follower_count = scrapy.Field()
- following_columns_count = scrapy.Field()
- following_count = scrapy.Field()
- pins_count = scrapy.Field()
- question_count = scrapy.Field()
- thank_from_count = scrapy.Field()
- thank_to_count = scrapy.Field()
- thanked_count = scrapy.Field()
- vote_from_count = scrapy.Field()
- vote_to_count = scrapy.Field()
- voteup_count = scrapy.Field()
- following_favlists_count = scrapy.Field()
- following_question_count = scrapy.Field()
- following_topic_count = scrapy.Field()
- marked_answers_count = scrapy.Field()
- mutual_followees_count = scrapy.Field()
- participated_live_count = scrapy.Field()
- locations = scrapy.Field()
- educations = scrapy.Field()
- employments = scrapy.Field()
items
写入MongoDB数据库的基本配置
- #配置MongoDB数据库的连接信息
- MONGO_URL = '172.16.5.239'
- MONGO_PORT = 27017
- MONGO_DB = 'zhihuuser'
- #参数等于False,就等于告诉你这个网站你想取什么就取什么,不会读取每个网站的根目录下的禁止爬取列表(例如:www.baidu.com/robots.txt)
- ROBOTSTXT_OBEY = False
- 执行pipelines下的写入操作
- ITEM_PIPELINES = {
- 'zhihuuser.pipelines.MongoDBPipeline': 300,
- }
settings.py
- pipelines.py:
1、首先我们要从settings文件中读取数据的地址、端口、数据库名称(没有会自动创建)。
2、拿到数据库的基本信息后进行连接。
3、将数据写入数据库
4、关闭数据库
注意:只有打开和关闭是只执行一次,而写入操作会根据具体的写入次数而定。
- import pymongo
- class MongoDBPipeline(object):
- """
- 1、连接数据库操作
- """
- def __init__(self,mongourl,mongoport,mongodb):
- '''
- 初始化mongodb数据的url、端口号、数据库名称
- :param mongourl:
- :param mongoport:
- :param mongodb:
- '''
- self.mongourl = mongourl
- self.mongoport = mongoport
- self.mongodb = mongodb
- @classmethod
- def from_crawler(cls,crawler):
- """
- 1、读取settings里面的mongodb数据的url、port、DB。
- :param crawler:
- :return:
- """
- return cls(
- mongourl = crawler.settings.get("MONGO_URL"),
- mongoport = crawler.settings.get("MONGO_PORT"),
- mongodb = crawler.settings.get("MONGO_DB")
- )
- def open_spider(self,spider):
- '''
- 1、连接mongodb数据
- :param spider:
- :return:
- '''
- self.client = pymongo.MongoClient(self.mongourl,self.mongoport)
- self.db = self.client[self.mongodb]
- def process_item(self,item,spider):
- '''
- 1、将数据写入数据库
- :param item:
- :param spider:
- :return:
- '''
- name = item.__class__.__name__
- # self.db[name].insert(dict(item))
- self.db['user'].update({'url_token':item['url_token']},{'$set':item},True)
- return item
- def close_spider(self,spider):
- '''
- 1、关闭数据库连接
- :param spider:
- :return:
- '''
- self.client.close()
python爬虫之scrapy的pipeline的使用的更多相关文章
- 教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scr ...
- 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...
- 0.Python 爬虫之Scrapy入门实践指南(Scrapy基础知识)
目录 0.0.Scrapy基础 0.1.Scrapy 框架图 0.2.Scrapy主要包括了以下组件: 0.3.Scrapy简单示例如下: 0.4.Scrapy运行流程如下: 0.5.还有什么? 0. ...
- Linux 安装python爬虫框架 scrapy
Linux 安装python爬虫框架 scrapy http://scrapy.org/ Scrapy是python最好用的一个爬虫框架.要求: python2.7.x. 1. Ubuntu14.04 ...
- Python爬虫框架Scrapy实例(三)数据存储到MongoDB
Python爬虫框架Scrapy实例(三)数据存储到MongoDB任务目标:爬取豆瓣电影top250,将数据存储到MongoDB中. items.py文件复制代码# -*- coding: utf-8 ...
- 《Python3网络爬虫开发实战》PDF+源代码+《精通Python爬虫框架Scrapy》中英文PDF源代码
下载:https://pan.baidu.com/s/1oejHek3Vmu0ZYvp4w9ZLsw <Python 3网络爬虫开发实战>中文PDF+源代码 下载:https://pan. ...
- Python爬虫框架Scrapy教程(1)—入门
最近实验室的项目中有一个需求是这样的,需要爬取若干个(数目不小)网站发布的文章元数据(标题.时间.正文等).问题是这些网站都很老旧和小众,当然也不可能遵守 Microdata 这类标准.这时候所有网页 ...
- 《精通Python爬虫框架Scrapy》学习资料
<精通Python爬虫框架Scrapy>学习资料 百度网盘:https://pan.baidu.com/s/1ACOYulLLpp9J7Q7src2rVA
- Python 爬虫6——Scrapy的安装和使用
前面我们简述了使用Python自带的urllib和urllib2库完成的一下爬取网页数据的操作,但其实能完成的功能都很简单,假如要进行复制的数据匹配和高效的操作,可以引入第三方的框架,例如Scrapy ...
随机推荐
- SpringBoot实现JWT保护前后端分离RESTful API
通常情况下, 将api直接暴露出来是非常危险的. 每一个api呼叫, 用户都应该附上额外的信息, 以供我们认证和授权. 而JWT是一种既能满足这样需求, 而又简单安全便捷的方法. 前端login获取J ...
- [CQOI2016]手机号码
嘟嘟嘟 这题一看就是数位dp. 我写数位dp,一般是按数位dp的格式写一个爆搜,然后加一点记忆化. 不过其实我一直不是很清楚记忆化是怎么加,感觉就是把dfs里的参数都扔到dp数组里,好像很暴力啊. 这 ...
- 003_python学习之 字符串前'r'的用法
在打开文件的时候open(r'c:\....') 加r和不加''r是有区别的 'r'是防止字符转义的 如果路径中出现'\t'的话 不加r的话\t就会被转义 而加了'r'之后'\t'就能保留原有的样子 ...
- (四)surging 微服务框架使用系列之网关 转载
一.什么是API网关 API网关是一个服务器,是系统对外的唯一入口.API网关封装了系统内部架构,为每个客户端提供一个定制的API.API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入 ...
- 禁止 gVim 在 Linux 下自动生成 undo 文件 *.un~
在配置文件 .vimrc 中加入配置项, set noundofile 完.
- jupyter notebook 代码补全插件工具-nbextensions(并修改默认的工作目录)
# conda install -c conda-forge jupyter_contrib_nbextensionsCollecting package metadata: doneSolving ...
- abp 基于api接口的页面内容提交
项目中,后端api接口需要接收来自页面提交的数据.注意下拉控件对应值,应该按以下方式赋值 @Html.DropDownListFor(m => m.IsFolder, new List<S ...
- macOS10.4后的刻盘新姿势
先sudo -s 输入密码 然后终端拖入createinstallmedia (在macOS Mojave.app显示包内容里面的resources里面的文件复制下来即可) 输入 --volume ...
- 微信小程序大型系统架构中应用Redis缓存要点
在大型分布式系统架构中,必须选择适合的缓存技术以应对高并发,实现系统相应的高性能,酷客多小程序经过慎重选型,选择了采用基于腾讯云服务的Redis弹性缓存技术,结合Redis官方推荐的.NET驱动类库S ...
- 十分钟学会Java8:lambda表达式和Stream API
Java8 的新特性:Lambda表达式.强大的 Stream API.全新时间日期 API.ConcurrentHashMap.MetaSpace.总得来说,Java8 的新特性使 Java 的运行 ...