中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用python爬蟲爬取大學排名信息

發布時間:2022-01-13 15:29:24 來源:億速云 閱讀:254 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關如何使用python爬蟲爬取大學排名信息,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

如何使用python爬蟲爬取大學排名信息

2. 這次爬取的網址請搜索“阿凡題”(純技術討論)

“阿凡題”(純技術討論)

3. 在該網址選擇查院校,其他都是默認

如何使用python爬蟲爬取大學排名信息4. 這次爬取的信息主要是下圖紅框的內容,在瀏覽器開發者中,點擊XHR就可以發現這個接口,接口的內容都有我們需要的信息。

如何使用python爬蟲爬取大學排名信息

5. 先構建請求頭,請求頭直接復制過來了
如何使用python爬蟲爬取大學排名信息

# 構建請求頭

headers = {

    'Accept': '*/*',

    'Accept-Encoding': 'gzip, deflate',

    'Accept-Language': 'zh-CN,zh;q=0.9',

    'Connection': 'keep-alive',

    'contentType': 'application/x-www-form-urlencoded; charset=utf-8',

    'Cookie': 'cfm-major=true',

    'Host': 'gaokao.afanti100.com',

    'media': 'PC',

    'Referer': 'http://gaokao.afanti100.com/university.html',

    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36',

    'X-Requested-With': 'XMLHttpRequest',

}

6. 接下來先請求這條url,通過format方法實現對url的拼接,以此達到翻頁的效果,通過查看接口的內容,發現是json格式,大學的信息在data鍵中的university_lst中,因此我們需要取出這個鍵,其中university_lst是列表。

如何使用python爬蟲爬取大學排名信息

def get_index():

    page = 1

    while True:

        if page > 188:

            break

        url = 'http://gaokao.afanti100.com/api/v1/universities/?degree_level=0&directed_by=0' \

              '&university_type=0&location_province=0&speciality=0&page={}'.format(page)

        # page自增一實現翻頁

        page += 1

        # 請求url并返回的是json格式

        resp = requests.get(url, headers=headers).json()

        # 取出大學所在的鍵值對

        university_lsts = resp.get('data').get('university_lst')

        if university_lsts:

            get_info(university_lsts)

        else:

            continue

7. 通過上一步取出鍵值對之后,就可以遍歷列表取出我們想要的信息。

def get_info(university_lsts):

    # 判斷列表是否不為空

    if university_lsts:

        # 遍歷列表取出每個大學的信息

        for university_lst in university_lsts:

            # 聲明一個字典存儲數據

            data_dict = {}

            # 大學名字

            data_dict['name'] = university_lst.get('name')

            # 大學排名

            data_dict['ranking'] = university_lst.get('ranking')

            # 大學標簽

            data_dict['tag_lst'] = university_lst.get('tag_lst')

            # 大學重點學科

            data_dict['key_major_count'] = university_lst.get('key_major_count')

            # 碩士點數

            data_dict['graduate_program_count'] = university_lst.get('graduate_program_count')

            # 博士點數

            data_dict['doctoral_program_count'] = university_lst.get('doctoral_program_count')

            # 是否211

            data_dict['is_211'] = university_lst.get('is_211')

            # 是否985

            data_dict['is_985'] = university_lst.get('is_985')

            # 哪個省

            data_dict['location_province'] = university_lst.get('location_province')

            # 哪個城市

            data_dict['location_city'] = university_lst.get('location_city')

            # 大學類型

            data_dict['university_type'] = university_lst.get('university_type')

            data_list.append(data_dict)

            print(data_dict)

8. 最后將信息存儲為文件

def save_file():

    # 將數據存儲為json文件

    with open('大學排名信息.json', 'w', encoding='utf-8') as f:

        json.dump(data_list, f, ensure_ascii=False, indent=4)

    print('json文件保存成功')

    # 將數據存儲為csv文件

    # 表頭

    title = data_list[0].keys()

    with open('大學排名信息.csv', 'w', encoding='utf-8', newline='') as f:

        writer = csv.DictWriter(f, title)

        # 寫入表頭

        writer.writeheader()

        # 寫入數據

        writer.writerows(data_list)

    print('csv文件保存成功')

9. 這次爬蟲很簡單,新手可以用來練練手,全部代碼附上

import requests

import json

import csv

# 構建請求頭

headers = {

    'Accept': '*/*',

    'Accept-Encoding': 'gzip, deflate',

    'Accept-Language': 'zh-CN,zh;q=0.9',

    'Connection': 'keep-alive',

    'contentType': 'application/x-www-form-urlencoded; charset=utf-8',

    'Cookie': 'cfm-major=true',

    'Host': 'gaokao.afanti100.com',

    'media': 'PC',

    'Referer': 'http://gaokao.afanti100.com/university.html',

    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36',

    'X-Requested-With': 'XMLHttpRequest',

}

# 聲明一個列表存儲字典

data_list = []

def get_index():

    page = 1

    while True:

        if page > 188:

            break

        url = 'http://gaokao.afanti100.com/api/v1/universities/?degree_level=0&directed_by=0' \

              '&university_type=0&location_province=0&speciality=0&page={}'.format(page)

        # page自增一實現翻頁

        page += 1

        # 請求url并返回的是json格式

        resp = requests.get(url, headers=headers).json()

        # 取出大學所在的鍵值對

        university_lsts = resp.get('data').get('university_lst')

        if university_lsts:

            get_info(university_lsts)

        else:

            continue

def get_info(university_lsts):

    # 判斷列表是否不為空

    if university_lsts:

        # 遍歷列表取出每個大學的信息

        for university_lst in university_lsts:

            # 聲明一個字典存儲數據

            data_dict = {}

            # 大學名字

            data_dict['name'] = university_lst.get('name')

            # 大學排名

            data_dict['ranking'] = university_lst.get('ranking')

            # 大學標簽

            data_dict['tag_lst'] = university_lst.get('tag_lst')

            # 大學重點學科

            data_dict['key_major_count'] = university_lst.get('key_major_count')

            # 碩士點數

            data_dict['graduate_program_count'] = university_lst.get('graduate_program_count')

            # 博士點數

            data_dict['doctoral_program_count'] = university_lst.get('doctoral_program_count')

            # 是否211

            data_dict['is_211'] = university_lst.get('is_211')

            # 是否985

            data_dict['is_985'] = university_lst.get('is_985')

            # 哪個省

            data_dict['location_province'] = university_lst.get('location_province')

            # 哪個城市

            data_dict['location_city'] = university_lst.get('location_city')

            # 大學類型

            data_dict['university_type'] = university_lst.get('university_type')

            data_list.append(data_dict)

            print(data_dict)

def save_file():

    # 將數據存儲為json文件

    with open('大學排名信息.json', 'w', encoding='utf-8') as f:

        json.dump(data_list, f, ensure_ascii=False, indent=4)

    print('json文件保存成功')

    # 將數據存儲為csv文件

    # 表頭

    title = data_list[0].keys()

    with open('大學排名信息.csv', 'w', encoding='utf-8', newline='') as f:

        writer = csv.DictWriter(f, title)

        # 寫入表頭

        writer.writeheader()

        # 寫入數據

        writer.writerows(data_list)

    print('csv文件保存成功')

def main():

    get_index()

    save_file()

if __name__ == '__main__':

    main()

關于“如何使用python爬蟲爬取大學排名信息”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陕西省| 秦皇岛市| 宁陕县| 平江县| 台州市| 通江县| 甘肃省| 奎屯市| 广平县| 凤翔县| 娄底市| 衡水市| 夹江县| 孝义市| 武陟县| 赤城县| 葵青区| 柳林县| 南乐县| 名山县| 曲麻莱县| 临桂县| 庄浪县| 永吉县| 出国| 黑龙江省| 思南县| 龙里县| 定日县| 宜君县| 大埔县| 雷州市| 邵东县| 乐安县| 全椒县| 婺源县| 禹城市| 德清县| 澜沧| 鲁甸县| 高邮市|