php采集qq企业邮箱通讯录,获取腾讯企业邮箱的企业通讯录和架构结构

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import requests

import re

import sys;

reload(sys);

sys.setdefaultencoding('utf8');

def print_tree(id, department_infos, level, staff_infors, f):

prefix = '----' * level

text = prefix + department_infos[id]['name'] + prefix

print text

f.write(text + '\n')

for key, value in department_infos.items():

if value['pid'] == id:

print_tree(value['id'], department_infos, level+1, staff_infors, f)

prefix = ' ' * level

for staff in staff_infors:

if staff['pid'] == id:

text = prefix + staff['name'] + ' ' + staff['alias']

print text

f.write(text + '\n')

if __name__ == "__main__":

# url参数中的sid

sid = 'xxxx'

# cookie中的qm_sid 和 qm_username

qm_sid = 'xxx'

qm_username='xxx'

all_departments_url = 'http://exmail.qq.com/cgi-bin/laddr_biz?action=show_party_list&sid={sid}&t=contact&view=biz'.format(sid=sid)

cookies = dict(qm_sid=qm_sid

, qm_username=qm_username)

request = requests.get(all_departments_url,cookies=cookies)

text = request.text

regexp = r'{id:"(\S*?)", pid:"(\S*?)", name:"(\S*?)", order:"(\S*?)"}'

results = re.findall(regexp, text)

department_ids = []

department_infors = dict()

root_department = None

for item in results:

department_ids.append(item[0])

department = dict(id=item[0], pid=item[1], name=item[2], order=item[3])

department_infors[item[0]] = department

if item[1] == 0 or item[1] == '0':

root_department = department

regexp = r'{uin:"(\S*?)",pid:"(\S*?)",name:"(\S*?)",alias:"(\S*?)",sex:"(\S*?)",pos:"(\S*?)",tel:"(\S*?)",birth:"(\S*?)",slave_alias:"(\S*?)",department:"(\S*?)",mobile:"(\S*?)"}'

limit = 10000

all_emails = []

staff_infors = []

for department_id in department_ids:

department_staff_url = 'http://exmail.qq.com/cgi-bin/laddr_biz?t=memtree&limit={limit}&partyid={partyid}&action=show_party&sid={sid}'.format(limit=limit, sid=sid, partyid=department_id)

request = requests.get(department_staff_url,cookies=cookies)

text = request.text

results = re.findall(regexp, text)

for item in results:

all_emails.append(item[3])

staff = dict(uin=item[0], pid=item[1], name=item[2], alias=item[3], sex=item[4], pos=item[5], tel=item[6], birth=item[7], slave_alias=item[8], department=item[9], mobile=item[10])

staff_infors.append(staff)

print str(len(all_emails)) + ' emails'

with open('all_emails.txt', 'w') as f:

for item in all_emails:

f.write(item + '\n')

with open('depart_staff_tree.txt', 'w') as f:

print_tree(root_department['id'], department_infors, 0, staff_infors, f)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值