如何将爬取的数据写入ES中
前面章节一直在说ES相关知识点,现在是如何实现将爬取到的数据写入到ES中,首先的知道ES的python接口叫elasticsearch dsl
链接:https://github.com/elastic/elasticsearch-dsl-py
什么是elasticsearch dsl:
Elasticsearch DSL是一个高级库,其目的是帮助编写和运行针对Elasticsearch的查询
安装:
pip install elasticsearch-dsl
首先我们在项目文件中新建一个名为models的包,然后在包里新建一个名为es.types.py的文件,用于定义ES的数据的定义
# !/usr/bin/env python
# -*- coding:utf-8 -*-
from datetime import datetime
from elasticsearch_dsl import Date,DocType,Text,Integer,analyzer,Completion,Keyword,Integer
from elasticsearch_dsl.connections import connections
connections.create_connection(hosts=["localhost"]) class ActicleType(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 = "jobbile"
doc_type = "article" if __name__=="__main__":
ActicleType.init()
然后再items中编写如下文件:
# !/usr/bin/env python
# -*- coding:utf-8 -*-
from models.es_types import ArticleType def save_to_es(self):
artcle = ArticleType()
artcle.title = self['title']
artcle.cteate_date = self['cteate_date']
artcle.content = remove_tags(self['content'])
artcle.front_image_url = self['front_image']
if "front_image_path" in self:
artcle.front_image_path = self['front_image_path']
artcle.praise_nums = self['praise_nums']
artcle.fav_nums = self['fav_nums']
artcle.comment_nums = self['comment_nums']
artcle.url = self['url']
artcle.tags = self['tags']
artcle.meta.id = self['url_object_id'] artcle.save()
return
然后再pipeline中编写如下文件:
# !/usr/bin/env python
# -*- coding:utf-8 -*-
from models.es_types import ArticleType
from w3lib.html import remove_tags class ElasticsearchPipeline(object):
#将数据写入到es中
def process_item(self,item,spider):
#将item转换为es数据
item.save_to_es()
return item
最后再settings中编写如下文件:
# !/usr/bin/env python
# -*- coding:utf-8 -*-
ITEM_PIPELINES = {
'ArticleSpider.pipelines.ElasticsearchPipeline': 300,
}
如何将爬取的数据写入ES中的更多相关文章
- 使用webdriver+urllib爬取网页数据(模拟登陆,过验证码)
urilib是python的标准库,当我们使用Python爬取网页数据时,往往用的是urllib模块,通过调用urllib模块的urlopen(url)方法返回网页对象,并使用read()方法获得ur ...
- python爬取拉勾网数据并进行数据可视化
爬取拉勾网关于python职位相关的数据信息,并将爬取的数据已csv各式存入文件,然后对csv文件相关字段的数据进行清洗,并对数据可视化展示,包括柱状图展示.直方图展示.词云展示等并根据可视化的数据做 ...
- python爬虫爬取天气数据并图形化显示
前言 使用python进行网页数据的爬取现在已经很常见了,而对天气数据的爬取更是入门级的新手操作,很多人学习爬虫都从天气开始,本文便是介绍了从中国天气网爬取天气数据,能够实现输入想要查询的城市,返回该 ...
- MATLAB爬虫爬取股票数据
近年来,大数据盛行,有关爬虫的教程层次不穷.那么,爬虫到底是什么呢? 什么是爬虫? 百度百科是这样定义的: 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种 ...
- python之爬取网页数据总结(一)
今天尝试使用python,爬取网页数据.因为python是新安装好的,所以要正常运行爬取数据的代码需要提前安装插件.分别为requests Beautifulsoup4 lxml 三个插件 ...
- 吴裕雄--天生自然PYTHON爬虫:安装配置MongoDBy和爬取天气数据并清洗保存到MongoDB中
1.下载MongoDB 官网下载:https://www.mongodb.com/download-center#community 上面这张图选择第二个按钮 上面这张图直接Next 把bin路径添加 ...
- scrapy架构与目录介绍、scrapy解析数据、配置相关、全站爬取cnblogs数据、存储数据、爬虫中间件、加代理、加header、集成selenium
今日内容概要 scrapy架构和目录介绍 scrapy解析数据 setting中相关配置 全站爬取cnblgos文章 存储数据 爬虫中间件和下载中间件 加代理,加header,集成selenium 内 ...
- 毕设之Python爬取天气数据及可视化分析
写在前面的一些P话:(https://jq.qq.com/?_wv=1027&k=RFkfeU8j) 天气预报我们每天都会关注,我们可以根据未来的天气增减衣物.安排出行,每天的气温.风速风向. ...
- Node.js爬取豆瓣数据
一直自以为自己vue还可以,一直自以为webpack还可以,今天在慕课逛node的时候,才发现,自己还差的很远.众所周知,vue-cli基于webpack,而webpack基于node,对node不了 ...
随机推荐
- C# 分支语句 练习题(中间变量,随机数)
练习一 请输入年份:”(1-9999),请输入月份:”(1-12),请输入日期(要判断大小月,判断闰年),判断输入的时间日期是否正确. 计算输入的时间是当前这一年的第几天. bool dateISOK ...
- 后端自测必备神器-PostMan
作为后端的一个小小菜鸟,写代码没有把握,总怕出错,也不敢直接扔测试,这个时候就需要一个神器能够辅助自己去测试各种情况,让自己安心的交给测试,嗯……这时神器出场了------PostMan.在一个偶然的 ...
- 初学HTML-9
详情和概要标签:利用summary标签来描述概要信息,利用details标签来描述详情信息. 默认情况下是折叠显示. 格式:<details> <summary>概要信息< ...
- 初学HTML-6
表单:专门用来收集用户信息 表单元素:在HTML中,标签/标记/元素都是指HTML中的标签. eg:<a>a标签/a标记/a元素 浏览器中所以得表单标签都有特殊的外观和默认的功能. 格式: ...
- python自动化开发-7
socket编程 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对 ...
- 13.2、进程的通信:Queue、Pipe、
内容相关: 概念:进程的通信 Queue:创建与使用 Pipe:创建与使用 进程通信的概念 进程的资源空间是相互独立的,一般而言是不能相互访问的.但很多情况下进程间需要互相通信,来完成系统的某项功能. ...
- zookeeper.Net
原文转至:http://www.cnblogs.com/shanyou/p/3221990.html 之前整理过一篇文章<zookeeper 分布式锁服务>,本文介绍的 Zookeeper ...
- 慕学在线网0.2_users表设计(2)
接着上一篇,我们继续对users表进行完善.其中包括邮箱验证码(EmailVerifyRecord)和轮播图(PageBanner)两个model. 1.编写"models.py" ...
- C#重试公用类
//Retry机制 public static class RetryExecutor { /// <summary> /// 重试零个参数无返回值的方法 /// </summary ...
- Linux记录屏幕输出log
应用场景: 请专家通过Console处理问题时,保留console输出无疑是非常有意义的.一来可留着作为维护日志,二来可供事后学习. 最简洁的方式是通过系统自带的script命令去记录. $ scri ...