Scrapy学习-24-集成elasticsearch
elasticsearch简单集成到scrapy中
使用elasticsearch的python接口处理数据
https://github.com/elastic/elasticsearch-dsl-py
elasticsearch-dsl-py官方使用文档
http://elasticsearch-dsl.readthedocs.io/en/latest/
创建一个DocType类,类似于item类
# 以获取jobbole网站的文章为例from datetime import datetime from elasticsearch_dsl import DocType, Date, Nested, Boolean, \analyzer, InnerObjectWrapper, Completion, Keyword, Text, Integerfrom elasticsearch_dsl.connections import connections connections.create_connection(hosts=["localhost"]) # 允许连接至多台服务器class ArticleType(DocType):#伯乐在线文章类型title = Text(analyzer="ik_max_word")create_date = Date()url = Keyword()url_object_id = Keyword()front_image_url = Keyword()front_image_path = Keyword()praise_nums = Integer()comment_nums = Integer()fav_nums = Integer()tags = Text(analyzer="ik_max_word")content = Text(analyzer="ik_max_word")class Meta:index = "jobbole"doc_type = "article"if __name__ == "__main__":ArticleType.init() # init方法会根据类定义直接生成mapping
创建一个items类,接收数据
class JobBoleArticleItem(scrapy.Item):title = scrapy.Field()create_date = scrapy.Field(input_processor=MapCompose(date_convert),)url = scrapy.Field()url_object_id = scrapy.Field()front_image_url = scrapy.Field(output_processor=MapCompose(return_value))front_image_path = scrapy.Field()praise_nums = scrapy.Field(input_processor=MapCompose(get_nums))comment_nums = scrapy.Field(input_processor=MapCompose(get_nums))fav_nums = scrapy.Field(input_processor=MapCompose(get_nums))tags = scrapy.Field(input_processor=MapCompose(remove_comment_tags),output_processor=Join(","))content = scrapy.Field()def get_insert_sql(self):insert_sql = """insert into jobbole_article(title, url, create_date, fav_nums)VALUES (%s, %s, %s, %s) ON DUPLICATE KEY UPDATE content=VALUES(fav_nums)"""params = (self["title"], self["url"], self["create_date"], self["fav_nums"])return insert_sql, paramsdef save_to_es(self):article = ArticleType()article.title = self['title']article.create_date = self["create_date"]article.content = remove_tags(self["content"])article.front_image_url = self["front_image_url"]if "front_image_path" in self:article.front_image_path = self["front_image_path"]article.praise_nums = self["praise_nums"]article.fav_nums = self["fav_nums"]article.comment_nums = self["comment_nums"]article.url = self["url"]article.tags = self["tags"]article.meta.id = self["url_object_id"]article.save()return
创建一个pipeline类,处理elasticsearch数据写入
from models.es_types import ArticleTypeclass ElasticsearchPipeline(object):def process_item(self, item, spider):item.save_to_es()return item
配置settings
ITEM_PIPELINES = {'ArticleSpider.pipelines.ElasticsearchPipeline': 1 }
转载于:https://www.cnblogs.com/cq146637/p/9090697.html
Scrapy学习-24-集成elasticsearch相关推荐
- Python分布式爬虫打造搜索引擎完整版-基于Scrapy、Redis、elasticsearch和django打造一个完整的搜索引擎网站
Python分布式爬虫打造搜索引擎 基于Scrapy.Redis.elasticsearch和django打造一个完整的搜索引擎网站 https://github.com/mtianyan/Artic ...
- 第 4-8 课:Spring Boot 集成 ElasticSearch
ElasticSearch 是⼀个开源的搜索引擎,建⽴在⼀个全⽂搜索引擎库 Apache Lucene™ 基础之上. Lucene 可以说是当下最先进.⾼性能.全功能的搜索引擎库--⽆论是开源还是私有 ...
- 【Spring Boot】21.集成elasticsearch
2019独角兽企业重金招聘Python工程师标准>>> 简介 目前对于检索功能比较有名的服务是我们常见的elasticsearch,所以我们这一节的重点,也是针对elasticsea ...
- 【SpringBoot笔记26】SpringBoot框架集成ElasticSearch数据库
这篇文章,主要介绍SpringBoot框架如何集成ElasticSearch数据库. 目录 一.SpringBoot集成ES 1.1.ElasticSearch介绍 1.2.引入ES依赖 1.3.实例 ...
- Spring Boot 集成 ElasticSearch,实现高性能搜索
1.ElasticSearch介绍 Elasticsearch 是java开发的,基于 Lucene 的搜索引擎.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful Web接口.Elast ...
- 深度学习框架集成平台C++ Guide指南
深度学习框架集成平台C++ Guide指南 这个指南详细地介绍了神经网络C++的API,并介绍了许多不同的方法来处理模型. 提示 所有框架运行时接口都是相同的,因此本指南适用于所有受支持框架(包括Te ...
- Spark 2.4重磅发布:优化深度学习框架集成,提供更灵活的流式接收器
Apache Spark 2.4.0是2.x系列中的第五个版本.此版本增加了屏障执行模式,以便更好地与深度学习框架集成:引入30多个更高阶的内置函数,能够更轻松地处理复杂数据类型:优化K8s集成,同时 ...
- 【深度学习】解析深度学习的集成方法
[深度学习]解析深度学习的集成方法 文章目录 1 前言 2 使用集成模型降低方差 3 如何集成神经网络模型3.1 Varying Training Data3.2 Varying Combinatio ...
- Python爬虫框架Scrapy 学习笔记 6 ------- 基本命令
1. 有些scrapy命令,只有在scrapy project根目录下才available,比如crawl命令 2 . scrapy genspider taobao http://detail.tm ...
最新文章
- 如何将 CentOS迁移到 AlmaLinux?
- python安装包为什么这么小-python为什么要安装到c盘
- Android开发之EditText监听软键盘清除(输入是否清除)
- css3高级和低级样式属性先后顺序
- .net core grpc 实现通信(一)
- python分支语句_Python中分支语句与循环语句实例详解
- 手把手教你用itchat统计好友信息,了解一下?
- VSTO学习笔记(四)从SharePoint 2010中下载文件
- mybatis的详解
- 2021年NBA附加赛第一轮预测
- Elasticsearch 架构原理—— 新数据写入过程
- eclipse中将java项目变成web项目
- C++开源日志库选择
- WinForm(二) WinForm进阶与复杂控件使用
- 数字滤波器原理及应用 借助matlab,数字滤波器原理及应用(借助MATLAB)
- java调用js中的方法样例
- 什么是Debian?
- mcake蛋糕预订图片
- 老男孩读PCIe之四:TLP类型
- SQL语句获取各种时间的方法