2 czly czly 于 2016.02.11 10:16 提问

python分析apache日志,大家看看错在哪

import os
import json
import http.client
import codecs
LogFile='/mnt/log/meiyiren.log'
#日志
logMess='/tmp/acc.log'
if os.path.isfile(logMess):
os.system('cp /dev/null %s'% logMess)
file=codecs.open(logMess,'w+',encoding='utf-8')
def cmd(cmd):
return os.popen(cmd).readlines()
'''
def getIp(ip):
return json.loads(os.popen("/usr/bin/curl http://ip.taobao.com/service/getIpInfo.php?ip=%s" % ip).readline())['data']
'''
conn = http.client.HTTPConnection('ip.taobao.com')
def getIpCountry(ip):
conn.request('GET','/service/getIpInfo.php?ip=%s' % ip)
r1=conn.getresponse()
if r1.status == 200:
return json.loads(r1.read())['data']
else:
return "Error"
#将access.log文件进行分析,并转为python数组
file.write(u"字段说明:ip 访问次数据 ip国家 城市的 isp号 省份 所在地区\n")
ipDb=[]
for i in cmd('''/usr/bin/awk '{print $1}' %s |sort |uniq -c''' % LogFile):
ip = i.strip().split(' ')
ipDb.append(ip)
#通过taobao 提供接口分析ip地址来源
for i in ipDb:
_tmpD=getIpCountry(i[1])
#格式说明:ip 访问次数据 ip国家 城市的 isp号 省份 所在地区
out="%s%s%s%s%s%s%s"%(i[1].ljust(20),i[0].ljust(10),_tmpD['country'].ljust(20),_tmpD['city'].ljust(16),_tmpD['isp_id'].ljust(16),_tmpD['region'].ljust(16),_tmpD['area'].ljust(16))
print (out)
file.write("%s\n"%out)
conn.close()
file.close()

错误提示

Traceback (most recent call last):
File "/opt/test.py", line 33, in
tmpD=getIpCountry(i[1])
File "/opt/test.py", line 22, in getIpCountry
return json.loads(r1.read())['data']
File "/usr/local/python3.4/lib/python3.4/json/
_init__.py", line 312, in loads
s.__class__.__name__))
TypeError: the JSON object must be str, not 'bytes'

2个回答

oyljerry
oyljerry   Ds   Rxr 2016.02.11 23:06
已采纳

你读取的数据是byte数组,需要先转换成str字符串

caozhy
caozhy   Ds   Rxr 2016.02.11 22:25
 return json.loads(r1.read().decode())['data']
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
运行报错,大家看看错在哪了?
#include #include int main() { int[5]={1,2,3,5,6}; int len; printf("请输入数组长度:len = "); scanf("%d",&len); int *pArr = (int *)malloc(sizeof(int)*len); *pAr
权限管理系统,但是无法实现其功能,请大家帮忙看看错在哪里
delphi做的权限系统,请大家帮忙看看错在哪,我无法实现其功能
在Kibana上查看Apache日志
安装环境:Apache+LogStash+ElasticSearch+Kibana 学习内容:看一下一条日志信息在ES及Kibana上是如何表示的 原始日志内容: 192.168.209.1 - - [02/Aug/2017:14:18:42 -0400] "GET /gif/r-ball.gif HTTP/1.1" 200 527 "http://192.168.209.143/gif/"
python分析apache日志的脚本
核心的正则模块是直接从apachelog模块里拿出来的,我自己几乎什么都没做apahelog模块地址:http://pypi.python.org/pypi/apachelog/1.0<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick="function ondblclick(){
Apache 错误日记(Error Log)记录分析
ErrorLog: 说明 存放错误日志的位置 语法 ErrorLog file-path|syslog[:facility] 默认值 ErrorLog logs/error_log (Unix) ErrorLog logs/error.log (Windows 和 OS/2) 作用域 server config, virtua
Storm实时日志分析实战
项目背景 最近公司做一个项目,用户需要对网站访问者的广告点击/浏览记录进行实时统计分析,分析结果存入数据库,输出报表。我们采用了Kafka+Storm+Zookeeper的解决方案。之前没有接触过,经过一段时间的研究,最终完成了项目。接下来的内容我将介绍我们的解决方案。供大家参考。我们的系统结构如下: 总体结构介绍 业务系统把点击/浏览广告业务日志统一按规定的格式发送到Kafka集群
Web学习-apache查看log日志
查看apache日志 apache日志位置 不同的系统位置不同。 widnows 假如是windows的话,xampp下应该是都存在的,直接去找apache的folder/log/access.log | error.log下的文件就好了 Ubuntu和Mac 这个是要找apache的位置的,可以尝试用whereis apache2来查看ubuntu
apache 错误日志
概要:熟悉apache, php环境  日志的配置 以及 代码中日志相关的方法一.apache 配置LogLevel error // 测试中发现调至error 级别 error_report(E_ALL) 代码出现问题,能写入到日志里,一旦再调高一级,如crit, 则不会写入到日志里。1. 全局配置日志 LogLevel error // 测试中发现调至error 级别 error_report...
Spark 分析Apache日志
声明:没博客内容由本人经过实验楼整理而来内容描述在给定的日志文件是一个标准的Apache2 程序产生的access.log文件,根据业务需求,我们需要分析得到下面几方面的数据: 统计每日PV和独立IP 统计每种不同的HTTP状态对应的访问数 统计不同独立IP的访问量 统计不同页面的访问量 Apache日志格式首先下载apache日志文件 wget http://labfile.oss.aliyun
学会使用Apache错误日志
1 错误日志格式     Apache 默认的错误日志配置如下:     ErrorLog logs/error_log     LogLevel warn     配置错误日志相对简单,只要说明日志文件的存放路径和日志记录等级即可。格式为:     日期和时间 错误等级 错误消息     2 日志记录等级     下面着重说说日志记录等级,包括八个级别。