我们以上篇的elasticsearch添加的内容为例,对其内容进行爬取,并获得有用信息个过程。

先来看一下elasticsearch中的内容:

{"took": 88,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 3,"max_score": 1,"hits": [{"_index": "megacorp","_type": "employee","_id": "2","_score": 1,"_source": {"first_name": "Jane","last_name": "Smith","age": 32,"about": "I like to collect rock albums","interests": ["music"]}},{"_index": "megacorp","_type": "employee","_id": "1","_score": 1,"_source": {"first_name": "John","last_name": "Smith","age": 25,"about": "I love to go rock climbing","interests": ["sports","music"]}},{"_index": "megacorp","_type": "employee","_id": "3","_score": 1,"_source": {"first_name": "Douglas","last_name": "Fir","age": 35,"about": "I like to build cabinets","interests": ["forestry"]}}]}
}

1.在python中,首先要用到urllib的包,其次对其进行读取的格式为json。

import urllib.request as request
import json

2.接下来,我们获取相应的路径请求,并用urlopen打开请求的文件:

if __name__ == '__main__':req = request.Request("http://localhost:9200/megacorp/employee/_search")resp = request.urlopen(req)

3.对得到的resp,我们需要用json的格式迭代输出:(注意是字符串类型)

jsonstr=""for line in resp:jsonstr+=line.decode()data=json.loads(jsonstr)print(data)

4.但是我们得到的信息是包含内容和属性的,我们只想得到内容,那么久需要对每层的属性进行分解获取:

employees = data['hits']['hits']for e in employees:_source=e['_source']full_name=_source['first_name']+"."+_source['last_name']age=_source["age"]about=_source["about"]interests=_source["interests"]print(full_name,'is',age,",")print(full_name,"info is",about)print(full_name,'likes',interests)

得到的内容为:

Jane.Smith is 32 ,
Jane.Smith info is I like to collect rock albums
Jane.Smith likes ['music']John.Smith is 25 ,
John.Smith info is I love to go rock climbing
John.Smith likes ['sports', 'music']Douglas.Fir is 35 ,
Douglas.Fir info is I like to build cabinets
Douglas.Fir likes ['forestry']

对于需要聚合的内容,我们可以通过下面的方法进行获取:

1:获取路径

url="http://localhost:9200/megacorp/employee/_search"

2.获取聚合的格式查询

data='''
    {"aggs" : {"all_interests" : {"terms" : { "field" : "interests" },"aggs" : {"avg_age" : {"avg" : { "field" : "age" }}}}}
}'''

3.标明头部信息

headers={"Content-Type":"application/json"}

4.同样,以请求和相应的方式获取信息并迭代为json格式

req=request.Request(url=url,data=data.encode(),headers=headers,method="GET")resp=request.urlopen(req)jsonstr=""for line in resp:jsonstr+=line.decode()rsdata=json.loads(jsonstr)

5.有用聚合信息内部依然是数组形式,所以依然需要迭代输出:

agg = rsdata['aggregations']
buckets = agg['all_interests']['buckets']for b in buckets:key = b['key']doc_count = b['doc_count']avg_age = b['avg_age']['value']                print('aihao',key,'gongyou',doc_count,'ren,tamenpingjuageshi',avg_age)

最终得到信息:

aihao music gongyou 2 ren,tamenpingjuageshi 28.5aihao forestry gongyou 1 ren,tamenpingjuageshi 35.0aihao sports gongyou 1 ren,tamenpingjuageshi 25.0

转载于:https://www.cnblogs.com/qianshuixianyu/p/9287556.html

python爬取elasticsearch内容相关推荐

  1. python爬取新浪微博内容_python新浪微博爬虫,爬取微博和用户信息 (含源码及示例)...

    [实例简介] 这是新浪微博爬虫,采用python+selenium实现. 免费资源,希望对你有所帮助,虽然是傻瓜式爬虫,但是至少能运行.同时rar中包括源码及爬取的示例. 参考我的文章: http:/ ...

  2. python爬取pdf内容_Python爬取读者并制作成PDF

    学了下beautifulsoup后,做个个网络爬虫,爬取读者杂志并用reportlab制作成pdf.. crawler.py #!/usr/bin/env python #coding=utf-8 & ...

  3. python爬取新闻网站内容_python爬虫案例:抓取网易新闻

    此文属于入门级级别的爬虫,老司机们就不用看了. 本次主要是爬取网易新闻,包括新闻标题.作者.来源.发布时间.新闻正文. 首先我们打开163的网站,我们随意选择一个分类,这里我选的分类是国内新闻.然后鼠 ...

  4. python爬取新闻网站内容findall函数爬取_【Python】【爬虫】爬取网易、腾讯、新浪、搜狐新闻到本地...

    这个实验主要爬取新闻网站首页的新闻内容保存到本地,爬取内容有标题.时间.来源.评论数和正文. 工具:python 3.6 谷歌浏览器 爬取过程: 一.安装库:urllib.requests.Beaut ...

  5. 【爬虫_数据库】Python爬取数据库内容并写入数据库

    爬取博客园内容并写入数据库 import requests from lxml import etree import re from python_link_mysql import MysqlOb ...

  6. python爬取的内容不是中午_大年初六中午,全国各区县哪里最冷?

    作者:国服帅座  经济学在读硕士 知乎专栏: https://zhuanlan.zhihu.com/c_1051263791760863232 认识高德地图API 在先前的文章中,我们曾了解过如何在高 ...

  7. python爬取新闻网站内容findall函数爬取_Python爬取新闻网标题、日期、点击量

    最近接触Python爬虫,以爬取学校新闻网新闻标题.日期.点击量为例,记录一下工作进度 目前,感觉Python爬虫的过程无非两步: Step1.获取网页url(利用Python库函数import ur ...

  8. python爬取微博内容_Python 爬虫如何机器登录新浪微博并抓取内容?

    最近为了做事件分析写了一些微博的爬虫,两个大V总共爬了超70W的微博数据. 官方提供的api有爬取数量上限2000,想爬取的数据大了就不够用了... 果断撸起袖子自己动手!先简单说一下我的思路: 一. ...

  9. python爬取页面内容由京东提_python制作爬虫爬取京东商品评论教程

    本篇文章是python爬虫系列的第三篇,介绍如何抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化.下面是要抓取的商品信息,一款女士文胸.这个商品共有红色,黑色和肤色三种颜色, 70B到90D ...

最新文章

  1. Qt的Android应用消除启动黑屏
  2. 微信公众号自定义菜单设置管理
  3. dump命令linux,Linux shell dump 命令
  4. 分布式监控系统Zabbix--使用Grafana进行图形展示
  5. MVC中获取来自控制器名称与动作的方法
  6. IPv4与IPv6数据报格式详解
  7. Golang里的Future/Promise
  8. 汉字转Base64的原理
  9. Neo4j Desktop图数据库导出
  10. Arcgis中怎样设置调查路线线型(带箭头的虚线),附带1:1万地形图符号库
  11. 交叉线与直通线的区别
  12. QT入门之UI设计界面
  13. 微信公众号运营都有哪些实用小技巧,你学会了吗
  14. 分治法——循环赛事日程表
  15. 阿里sentinel监控客户端配置
  16. 阿里试用,女朋友逼着我给她排序
  17. android 格式转化,智兔格式转换器
  18. 模拟两个神经元的连接,突触前神经元分别传递兴奋性和抑制性信号给突触后神经元(神经元模型使用HH方程)
  19. 新疆和田计算机考试成绩查询,2019新疆和田公务员笔试成绩查询入口_合格分数线...
  20. OpenCV图像拼接器Stitcher 无法使用GPU加速

热门文章

  1. java bip-39_Java中对XML的解析详解
  2. kettle增加字段报错_【实战】使用 Kettle 工具将 mysql 数据增量导入到 MongoDB 中
  3. 学习笔记5-C语言-数组
  4. C++ 泛型编程(一):模板基础:函数模板、类模板、模板推演成函数的机制、模板实例化、模板匹配规则
  5. leetcode620. 有趣的电影(SQL)
  6. DateFormat(炸窝)
  7. 《Python Cookbook 3rd》笔记(3.10):矩阵与线性代数运算
  8. 《Java8实战》笔记汇总
  9. Java JUC工具类--Master-Worker
  10. 计算机系统基础 数据的表示和存储