Python分析好友空间星座代码

news/2024/10/19 15:43:38/

通过学习Python的使用,可以在空间获取好友星座分布图

代码如下

#1、导入模块

import json
import requests
from lxml import etree
import pandas as pd
import pygal
import pickle

#2、 获取qq好友里全部星座信息 

#获得字典形式的cookies,每次用都要更新

cookiestext = '自己QQ空间的cookies'

def dictcookies(cookiestext): # 把字符串格式的cookies转化为字典格式
    cookies = {} # 目标字典
    cookiespure = cookiestext.replace(' ','')
    cookieslist = cookiespure.split(';')
    for i in cookieslist:
        key,value = i.split('=',1)
        cookies[key] = value
    # print(cookies) # 需要的话可以打印一下观察结果
    return cookies
def savetofile(filename,content):
    save_file = open(filename,'wb')
    pickle.dump(content,save_file)

def readfile(filename):
    load_file = open(filename,'rb')
    data_file = pickle.load(load_file)
    return data_file

cookies = dictcookies(cookiestext)

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'}

# 获得好友空间的url地址列表,先要获得储存好友信息的json文件
frdjsurl = 'https://user.qzone.qq.com/proxy/domain/r.qzone.qq.com/cgi-bin/tfriend/friend_ship_manager.cgi?uin=491034714&do=1&rd=0.7684480696337077&fupdate=1&clean=1&g_tk=1578640073&qzonetoken=6b459c18d1ed1f360ddf1f19cf3b2ec8ffa91df433aea503381f8ac7d67f312178b2304d498f41d6c8f3&g_tk=1578640073'
frdjspage = requests.get(frdjsurl, headers=headers, cookies=cookies)

# 解析json文件
temp = json.loads(frdjspage.text[10:-2])
a = temp['data']['items_list']
# 生成存储好友昵称和qq号的字典
friends = {}
for i in a: 
    friends[i['uin']] = {'name':i['name']}
for k in friends.keys():
    friends[k]['link'] = 'https://user.qzone.qq.com/'+str(k)

3、#获取星座相关信息
for v in friends.values():
    frdpage = requests.get(v['link'], headers=headers, cookies=cookies)
    a = etree.HTML(frdpage.text)
    title = a.xpath('/html/head/title')[0].text
    if title != 'QQ空间-分享生活,留住感动':
        print(str(title) + '的空间打得开')
        v['open'] = True
        info = a.xpath('//*[@id="profile-detail"]/div/div[2]/ul/li[1]/div[2]/h4')
        info1 = a.xpath('//*[@id="profile-detail"]/div/div[2]/ul/li[2]/div[2]/h4')
        if info:
            if info[0].text:
                if info[0].text.find('座') != -1:
                    itemp = info[0].text.find('座')
                    xingzuo = info[0].text[itemp-2:itemp+1]
                    print(xingzuo)
                    v['xingzuo'] = xingzuo
                elif info1:
                    if info1[0].text:
                        if info1[0].text.find('座') != -1:
                            itemp = info1[0].text.find('座')
                            xingzuo = info1[0].text[itemp-2:itemp+1]
                            print(xingzuo)
                            v['xingzuo'] = xingzuo

4、#做成表格,方便可视化处理  

''' 
#分别使用 isin( )和~isin( )删选数据
starlist = ['白羊座','金牛座','双子座', '巨蟹座','狮子座','处女座','天秤座','天蝎座','射手座','摩羯座','水瓶座','双鱼座']
xz = fr['xingzuo'][fr['xingzuo'].isin(starlist)]
xzc = xz.value_counts()

starlist = ['无法打开主页获取','没有相关信息']
xz = fr['xingzuo'][~fr['xingzuo'].isin(starlist)]
xzc = xz.value_counts()
'''

fr = pd.DataFrame(friends).transpose()# 设置一下转置
starlist = ['白羊座','金牛座','双子座', '巨蟹座','狮子座','处女座','天秤座','天蝎座','射手座','魔羯座','水瓶座','双鱼座']
xz = fr['xingzuo'][fr['xingzuo'].isin(starlist)]
xzc = xz.value_counts()
print(xzc)
# 可视化 横柱图
chart = pygal.HorizontalBar()
chart.title = '好友星座的分布图'
for i in range(len(xzc)):
    chart.add(xzc.index[i],xzc.iloc[i],rounded_bars=5)#可以修改数字5,数字越大,柱状图两头越圆润  
chart.render_to_file('xz.svg')


http://www.ppmy.cn/news/433106.html

相关文章

星座时代:一家企业的自白

英国占星学学会会员,坚持认为“不相信星座的同志都不是好同志。世界上的一切,原本都可以用星座来解释”。在星座话题如此热门的今天,致远也来尝试下“星座版剖析”。敢于走在人前具有“未来思维”的水瓶,热爱自由身体力行的射手座…

全球中低轨星座列传

全球中低轨星座列传 此前,美国北方天空研究机构(Northern Sky Research,NSR)对全球中低轨通信卫星星座进行了盘点,全球至少有15家公司已经对外公布其星座计划,并且大部分公司表示在五年内推出自己的第一代…

python十二星座符号_12种编程语言类比12星座女

PS:这篇博文是一个技术群的码农写的,这哥们真有才,根据我对星座的看法,比喻得很靠谱,特转如下: 计算机语言的实质其实是为了让人类能够更好与计算机打交道,最终结果都是通过编译成二进制代码或通…

测星座隐私条款

“测星座”最终用户使用授权协议如下 本最终用户软件授权协议(以下简称“协议”)是由您,作为最终用户,与“测星座”手机客户端软件共同签订 1. 用户个人隐私信息保护 1.1.适用范围 在您使用本软件网络服务,本软件自…

java 判断星座_java基础题,关于输入月日来判断星座的,求教

展开全部 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Scanner; public class Test { public static void main(String[] args) throws ParseException { Scanner scanner new…

用python画星座_用python做星座介绍程序。

展开全部 """ *****************输入出生年月,可以知道生肖、星座、星座符号和星座特点********************* """ f1"精力旺盛、活力充沛的星座。性格与爱62616964757a686964616fe78988e69d8331333365653333情多数“横冲直撞”…

生日转换星座html,jQuery实现根据生日计算年龄 星座 生肖

//根据输入的生日自动获取星座,生肖和年龄。 var year = new Array("猪", "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗");…

html输入日期算出星座,如何通过日期计算星座

这篇文章主要介绍了关于通过日期计算星座,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下起始月份号数星座结束月份号数时间区间1222摩羯座11912/22 - 1/19 120水瓶座2181/20 - 2/18 219双鱼座3202/19 - 3/20 321白羊座4203/22…