Pythonで各大学を登り、弟の大学選びを可視化し、弟は牛を叫ぶ。


一、urlを取得する
中国の教育を開いて、F12を押して、上部はNetWorkを選択して、XHRを選択します。
ページを更新し、urlを観察し、Reponseの解析によって本物のurlが見つかった。https://api.eol.cn/gkcx/api/
データはJsonに記憶されている。
在这里插入图片描述Headersをクリックして、要求パラメータを確認してください。
在这里插入图片描述
要求方式はPOSTです。
二、要求を送信する
urlを取得すると、私たちはrequestsシミュレーションブラウザを利用して要求を送信し、Jsonのデータを取得することができます。コードは以下の通りです

#    
import numpy as np
import pandas as pd
import requests
import json
from fake_useragent import UserAgent
import time

#     
def get_one_page(page_num):
    #   URL
    url = 'https://api.eol.cn/gkcx/api/'

    #   headers
    headers = {
        'User-Agent': UserAgent().random,
        'Origin': 'https://gkcx.eol.cn',
        'Referer': 'https://gkcx.eol.cn/school/search?province=&schoolflag=&recomschprop=',
    }

    #   data
    data = {
        'access_token': "",
        'admissions': "",
        'central': "",
        'department': "",
        'dual_class': "",
        'f211': "",
        'f985': "",
        'is_dual_class': "",
        'keyword': "",
        'page': page_num,
        'province_id': "",
        'request_type': 1,
        'school_type': "",
        'size': 20,
        'sort': "view_total",
        'type': "",
        'uri': "apigkcx/api/school/hotlists",
    }

    #     
    try:
        response = requests.post(url=url, data=data, headers=headers)
    except Exception as e:
        print(e) 
        time.sleep(3) 
        response = requests.post(url=url, data=data, headers=headers)
三、Jsonデータを解析するResponseによって返されたJsonフォーマットでは、私達が欲しい内容を解析しました。コードは以下の通りです。

#       
    school_data = json.loads(response.text)['data']['item']

    #    
    school_name = [i.get('name') for i in school_data]
    #     
    belong = [i.get('belong') for i in school_data]
    #     
    dual_class_name = [i.get('dual_class_name') for i in school_data]
    #   985
    f985 = [i.get('f985') for i in school_data]
    #   211
    f211 = [i.get('f211') for i in school_data]
    #     
    level_name = [i.get('level_name') for i in school_data]
    #     
    type_name = [i.get('type_name') for i in school_data]
    #     
    nature_name = [i.get('nature_name') for i in school_data]
    #    
    view_total = [i.get('view_total') for i in school_data]
    #   
    province_name = [i.get('province_name') for i in school_data]
    #   
    city_name = [i.get('city_name') for i in school_data]
    #   
    county_name = [i.get('county_name') for i in school_data]
    
    #     
    df_one = pd.DataFrame({
        'school_name': school_name,
        'belong': belong,
        'dual_class_name': dual_class_name,
        'f985': f985,
        'f211': f211,
        'level_name': level_name,
        'type_name': type_name,
        'nature_name': nature_name,
        'view_total': view_total,
        'province_name': province_name,
        'city_name': city_name,
        'county_name': county_name,
    })

    return df_one
四、Excelに預け入れます
まずデータをPandasに保存して、データ分析をしてからExcelに書き込みます。

#     
def get_all_page(all_page_num):
    #    
    df_all = pd.DataFrame()

    #     
    for i in range(all_page_num):
        #     
        print(f'     {i + 1}      ')
        #     
        df_one = get_one_page(page_num=i+1)
        #   
        df_all = df_all.append(df_one, ignore_index=True)
        #   
        time.sleep(np.random.uniform(2))

    return df_all


#     
df_school = get_all_page(all_page_num=143)

#     
df_school.to_excel('./data/      .xlsx', index=False)
五、運転コード
在这里插入图片描述
六、データ展示
在这里插入图片描述
七、データの可視化
1.各省市地区の大学数分布柱図:
在这里插入图片描述
地図
在这里插入图片描述
各省の高校レベル分布
在这里插入图片描述
全国高校のタイプ分布
在这里插入图片描述
上のデータがあったら、全国の高校について知っていますか?
ここでは、Pythonで各大学を登り、弟の大学選びを視覚化します。弟が牛Xを叫ぶ文章を紹介しました。Python関連のデータを登り、可視化しました。私たちの以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。