天天看點

【程式媛曬83行代碼】素顔女神,輕松分析使用者畫像

在中國程式媛中,他們的代碼有什麼樣的魅力,Aone聯合雲栖社群、餓了麼、釘釘、阿裡雲、天貓、口碑發起首屆程式媛比碼活動——不秀大長腿,秀高智商;不秀美圖照,秀代碼圖,參與曬碼互動遊戲赢“83行代碼”T恤!

我們來說說這群女工程師的第83行代碼及代碼背後的故事:

我是交通銀行的前端女工程師,

我的第83行代碼來自一段爬取指定使用者評論區的粉絲資訊然後分析并畫出使用者畫像的項目,很好玩。

導入所需庫

import json

import time

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import matplotlib

import squarify

import requests

from matplotlib.patches import Polygon

from mpl_toolkits.basemap import Basemap

from matplotlib.collections import PatchCollection

擷取每條微網誌評論的url參數

def get_comment_parameter():

url = 'https://m.weibo.cn/api/container/getIndex?uid=1773294041&luicode=10000011&lfid=100103type%3D1%26q%3D%E7%8E%8B%E8%8F%8A&\
       featurecode=20000320&type=uid&value=1773294041&containerid=1076031773294041'

c_r = requests.get(url)

for i in range(2,11):
    c_parameter = (json.loads(c_r.text)["data"]["cards"][i]["mblog"]["id"])
    comment_parameter.append(c_parameter)
return comment_parameter           

if name == "__main__":

comment_parameter = []#用來存放微網誌url參數
comment_url = []#用來存放微網誌url
user_id = []#用來存放user_id
comment = []#用來存放評論
containerid = []#用來存放containerid
feature = []#用來存放使用者資訊
id_lose = []#用來存放通路不成功的user_id

get_comment_parameter()

#擷取每條微網誌評論url
c_url_base = 'https://m.weibo.cn/api/comments/show?id='
for parameter in comment_parameter:
    for page in range(1,101):#提前知道每條微網誌隻可抓取前100頁評論
        c_url = c_url_base + str(parameter) + "&page=" + str(page)
        comment_url.append(c_url)

#擷取每個url下的user_id以及評論
for url in comment_url:
    u_c_r = requests.get(url)
    try:
        for m in range(0,9):#提前知道每個url會包含9條使用者資訊
            one_id = json.loads(u_c_r.text)["data"]["data"][m]["user"]["id"]
            user_id.append(one_id)
            one_comment = json.loads(u_c_r.text)["data"]["data"][m]["text"]
            comment.append(one_comment)
    except:
        pass
    

#擷取每個user對應的containerid
user_base_url = "https://m.weibo.cn/api/container/getIndex?type=uid&value="
for id in set(user_id):#需要對user_id去重
    containerid_url = user_base_url + str(id)
    try:
        con_r = requests.get(containerid_url)
        one_containerid = json.loads(con_r.text)["data"]['tabsInfo']['tabs'][0]["containerid"]
        containerid.append(one_containerid)
    except:
        containerid.append(0)
        
#擷取每個user_id對應的基本資訊
#這裡需要設定cookie和headers模拟請求
user_agent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"
headers = {"User-Agent":user_agent}
m = 1
for num in zip(user_id,containerid):
    url = "https://m.weibo.cn/api/container/getIndex?uid="+str(num[0])+"&luicode=10000011&lfid=100103type%3D1%26q%3D&featurecode=20000320&type=uid&value="+str(num[0])+"&containerid="+str(num[1])
    try:
        r = requests.get(url,headers = headers,cookies = cookie)
        feature.append(json.loads(r.text)["data"]["cards"][1]["card_group"][1]["item_content"].split("  "))
        print("成功第{}條".format(m))
        m = m + 1
        time.sleep(1)
    except:
        id_lose.append(num[0])

#将featrue建立成DataFrame結構便于後續分析
user_info = pd.DataFrame(feature,columns = ["性别","年齡","星座","國家城市"])           

工作兩年,不喜歡化妝,已有男朋友,哈哈~

【程式媛曬83行代碼】素顔女神,輕松分析使用者畫像

與坤0830小姐姐互動,為她打call——> 點選進去曬碼

更多小姐姐,點選進入檢視代碼

有被代碼耽誤的釘釘吃貨程式媛,寫代碼寫到忘記吃飯的——采霜

她急需能把她從代碼中叫醒去吃飯的小夥伴,趕緊勾搭;

http://yq.aliyun.com/roundtable/126499/answer/170319#visit170319

有以代碼為樂的餓了麼大前端打(bei)雜(guo)工程師——敖天羽

http://yq.aliyun.com/roundtable/126499/answer/170299#visit170299

還有全棧美女工程師——前端後端一鍋端的——墨瑜女神

http://yq.aliyun.com/roundtable/126499/answer/170316#visit170316

還有阿裡雲活好碼贊,像男人一樣活着的技術專家小姐姐——清宵

http://yq.aliyun.com/roundtable/126499/answer/170296#visit170296

和天貓Java程式媛,happy(被)來(逼)的——采月

http://yq.aliyun.com/roundtable/126499/answer/170354#visit170354

阿裡口碑 搜尋推薦組的JAVA女工程師——妍霏

http://yq.aliyun.com/roundtable/126499/answer/214059#visit214059

阿裡口碑基礎平台技術部的工程師-銜遠,一個技術與馬甲線并存的mm

http://yq.aliyun.com/roundtable/126499/answer/248798#visit248798

雲栖社群聚能聊專家,具有知性溫婉氣質的——海洋的雲

http://yq.aliyun.com/roundtable/126499/answer/170290#visit170290

福州市五佰網絡科技有限公司的Java女工程師——江小白太白

http://yq.aliyun.com/roundtable/126499/answer/189332#visit189332

在下*的程式媛——cn_suqingnian

http://yq.aliyun.com/roundtable/126499/answer/170309#visit170309

交通銀行的前端女工程師——昆0830

http://yq.aliyun.com/roundtable/126499/answer/201979#visit201979