您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何使用python爬蟲爬取大學排名信息,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
2. 這次爬取的網址請搜索“阿凡題”(純技術討論)
“阿凡題”(純技術討論)
3. 在該網址選擇查院校,其他都是默認
4. 這次爬取的信息主要是下圖紅框的內容,在瀏覽器開發者中,點擊XHR就可以發現這個接口,接口的內容都有我們需要的信息。
5. 先構建請求頭,請求頭直接復制過來了
# 構建請求頭
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是列表。
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爬蟲爬取大學排名信息”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。