• 欢迎来到本博客,希望可以y一起学习与分享

Scrapy将数据写入到Elsaticsearch

Python benz 3年前 (2018-10-31) 237次浏览 0个评论 扫描二维码
文章目录[隐藏]

安装Elasticsearch

这里我们安装的是elasticsearch-rtf
(elasticsearch中文发行版,针对中文集成了相关插件,方便新手学习测试。)

这里是github上的链接,可以使用git工具clone,或者直接下载zip,解压后的文件夹名称应该是elasticsearch-rtf-master,cd进去,执行bin里面的elasticsearch文件,windows用户应该是.bat文件,直接双击运行。

输出本地服务端口信息(127.0.0.1:9200)等信息,表示启动成功

安装Elasticsearch-head

elasticsearch的一个前端界面,可视化程度较高

这里是github的链接

  1. (下载后,解压进入文件夹中)
    cd elasticsearch-head
  2. (安装cnpm,淘宝的镜像,加速执行过程)
    npm install cnpm
  3. cnpm install
  4. cnpm run start


如图示,则启动成功,本地端口号:9100

安装kibana

Kibana 是一个开源的分析和可视化平台,旨在与 Elasticsearch 合作。Kibana 提供搜索、查看和与存储在 Elasticsearch 索引中的数据进行交互的功能。开发者或运维人员可以轻松地执行高级数据分析,并在各种图表、表格和地图中可视化数据。

我们去elasticsearch官网下载对应版本操作系统的kibana,kibana的版本号要和你的elasticsearch版本一致,并不一定是首页(最新版本)的那个,可以到历史发布文件里查找。下载后,进入到bin文件夹,执行kibana.bat。


成功启动的kibana:(本地端口5601)

安装Elasticsearch-dsl

进入项目的虚拟环境,安装Elasticsearch-dsl插件,此插件是对原生的elasticsearch的高级封装,简化了elasticsearch的操作,可以基于此建立与本地elasticsearch服务器的连接。

pip install elasticsearch-dsl

项目的根路径建立models文件夹,新建es_type.py文件夹,我们在里面定义文章的类型

python连接elasticsearch报IllegalOperation异常

用python连接es数据库,结果报错如下:
elasticsearch_dsl.exceptions.IllegalOperation: Index object cannot have multiple types, doc already set, trying to assign article.
这里是因为版本不匹配的问题
查看es版本方法如下:

查看elasticsearch包与elasticsearch-dsl版本方法(pip list)如下:

因为我的es是5.1.1的版本,对应的python包应该也是5.x的。先通过pip uninstall xxx卸载对应的包,然后指定版本安装:pip install elasticsearch==5.2pip install elasticsearch-dsl==5.1

再运行代码就可以了

执行es_type.py,我们发现jobbole Index(数据库)已经创建好了

我们通过类初始化很容易的写入了元数据(mapping信息)

接下来我们在pipeline.py中创建一个pipeline来做数据的填充

当然,不要忘了将我们的pipeline添加到settings.py文件中:

执行我们的爬虫(main文件),会看到已经插入的数据

将es数据转换,放到item里

pipelines.py,中可以从item直接转换数据:


文章 Scrapy将数据写入到Elsaticsearch 转载需要注明出处
喜欢 (0)

您必须 登录 才能发表评论!