Python实现将微信公众号用户基本信息数据导出到csv文件

发布 : 2017-07-11 分类 : Python 浏览 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#########################################################################
# Author: matrix
# Created Time: Jun 29 Sep 2017 15:55:41 PM CST
# File Name: update_wechat_auth_access_token.py
# Description: 更新已授权公众号的AccessToken
#########################################################################
import os
import sys
import csv
import json

sys.getdefaultencoding()

PROJECT_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
if PROJECT_PATH not in sys.path:
sys.path.append(PROJECT_PATH)

from application.utils.wxopenserver import WxOpenCallback
from application.utils.wxopenclient import WxOpenClient

if __name__ == '__main__':
wxopencallback = WxOpenCallback()
auth_list = wxopencallback.get_authorizer_list()
print("auth_list:", auth_list)
print("list:", auth_list.get('list'))
print("total_count:", auth_list.get('total_count'))
wxopenclient = WxOpenClient(authorizer_appid)

user_list = wxopenclient.get_user_list('').get('data').get('openid')
next_openid = wxopenclient.get_user_list('').get("next_openid")

file_dir = '/data/python_server/code/lalabot/data/article/wx4834ee84edeed705/'
headers = ['openid', 'nickname', 'sex', 'language', 'country', 'province', 'city', 'headimgurl',
'subscribe', 'subscribe_time', 'groupid']

content_list = []
flag = True
while flag:
userList = []
lang = "zh_CN"
sum = 1
for i in user_list:
openid = i
payload = {}
payload.update({"openid": openid})
payload.update({"lang": lang})
userList.append(payload)
sum = sum + 1
if sum == 100:
# print("userList:", userList)
user_info_list = json.loads(wxopenclient.batch_get_user_info(userList).text, strict=False).get(
'user_info_list')
# print("user_info_list:", user_info_list)

content_list = []
for user_info in user_info_list:
rows = {}
rows.update({"openid": user_info.get('openid')})
rows.update({"nickname": user_info.get('nickname')})
rows.update({"sex": user_info.get('sex')})
rows.update({"language": user_info.get('language')})
rows.update({"country": user_info.get('country')})
rows.update({"province": user_info.get('province')})
rows.update({"city": user_info.get('city')})
rows.update({"headimgurl": user_info.get('headimgurl')})
rows.update({"subscribe": user_info.get('subscribe')})
rows.update({"subscribe_time": user_info.get('subscribe_time')})
rows.update({"groupid": user_info.get('groupid')})
content_list.append(rows)

print("content_list:", content_list)
with open(file_dir + 'xxx用户基本信息.csv', 'a+') as f:
f_csv = csv.DictWriter(f, headers)
f_csv.writeheader()
f_csv.writerows(content_list)

sum = 1
userList = []

if wxopenclient.get_user_list(next_openid).get("next_openid") == None:
print('wxopenclient.get_user_list(next_openid).get("next_openid"):',
wxopenclient.get_user_list(next_openid).get("next_openid"))
flag = False
else:
user_list = wxopenclient.get_user_list(next_openid).get('data').get('openid')
next_openid = wxopenclient.get_user_list(next_openid).get("next_openid")

python文件打开方式详解:a、a+、r+、w+区别

a

1
附加写方式打开,不可读

a+

s

1
附加读写方式打开

r+

1
2
可读可写
若文件不存在,报错

w

1
新建只写,会将文件内容清零

w+

1
2
3
可读可写
若文件不存在,创建
若文件存在则会将文件内容清零

Python处理JSON时的值报错

1
ValueError: Invalid control character at: line 1 column 8363 (char 8362)
1
出现错误的原因是字符串中包含了回车符(\r)或者换行符(\n)

解决方法

对这些字符转义

1
json_data = json_data.replace('\r', '\\r').replace('\n', '\\n')

使用关键字strict

1
json.loads(json_data, strict=False)
本文作者 : Matrix
原文链接 : https://matrixsparse.github.io/2017/07/11/Python实现将微信公众号用户基本信息数据导出到csv文件/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

知识 & 情怀 | 二者兼得

微信扫一扫, 向我投食

微信扫一扫, 向我投食

支付宝扫一扫, 向我投食

支付宝扫一扫, 向我投食

留下足迹