Python 爬取世界大学排行 正则匹配 全部年份

阅读: 评论:0

Python 爬取世界大学排行 正则匹配 全部年份

Python 爬取世界大学排行 正则匹配 全部年份

import re #正则表达式  匹配
import requests
import csv
import osdef get_text(year):url = "/{}/payload.js".format(year)print(url)headers = {'Referer': '/{}'.format(year),'User-Agent': 'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/93.0.4577.63Safari/537.36Edg/93.0.961.38'}#防反爬虫response = (url, headers=headers)#向网站发起请求,并获取响应对象参数def get_dict_value(key):try:result = dict_value[key].replace('"', "")except:result = place('"', "")return resultdef printUnivList(ulist, year):os.mkdir('./{}'.format(year))#创建目录对应一个年份f = open('./{}/{}.csv'.format(year, year), 'w', encoding='utf-8', newline="")csv_writer = csv.writer(f)csv_writer.writerow(["排名", "学校名称", "国家", "国家排名", "总分", "校友排名"])#表头csv_writer.writerows(ulist)#多行写入列表f.close()for year in range(2003, 2022):#循环从2003至2022年res_str = get_text(str(year))#获得对应年份的源代码,str(year)将其作为字符串repx = repile(r'univNameCn:"(.*?)",univUp.*?region:(.*?),regionRanking:(.*?),score:(.*?),indData:{"d+?":(.*?),"')hash_str = repx.findall(res_str, re.S)#re.s可匹配换号符#正则表达式匹配对应数据compile()与findall()一起使用,返回一个列表parameter = re.findall(r'}((.*?))));', res_str)[0].replace('"', "").split(',')#replace去掉字符串,split用,分隔成列表parameter_name = re.findall(r'(function((.*?)){', res_str)[0].split(",")dict_value = dict(zip(parameter_name, parameter))#将parameter_name, parameter合并res_list = []for j in range(len(hash_str)):i = hash_str[j]rank = j + 1  # 排名name = i[0]  # 校名country = get_dict_value(i[1])  # 国家regional_ranking = get_dict_value(i[2])   # 地区排名score = get_dict_value(i[3])  # 成绩alumni_award = get_dict_value(i[4])  # 校友获奖res_list.append([rank, name, country, regional_ranking, score, alumni_award])#将一所大学全部数据放入`一个列表里printUnivList(res_list, year)

本文发布于:2024-01-29 20:08:51,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170653013517967.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:正则   年份   大学   世界   Python
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23