python爬虫 爬取大学排名

编程入门 行业动态 更新时间:2024-10-25 15:32:25

python<a href=https://www.elefans.com/category/jswz/34/1770264.html style=爬虫 爬取大学排名"/>

python爬虫 爬取大学排名

思路说明:以下的几种排名数据全部来自“迁木网”,爬取每一种排名时所用的代码大致相同,只有部分因网页数据格式的不同而引起的变动。以下将爬取四种排名的代码分别列出,并展示结果。由于第二题中需要用到第一题中所得到的数据,而将四种排名爬到的数据全部放在一份程序中,既会显得冗长混乱,又会由于爬取每种排名时所用的源代码细节的不同而出现问题。故在第一问爬取数据后,我将每一份排名数据转换为python的pandas库中的DataFrame形式并输出csv文件到桌面,在完成第二题时,直接读入数据,再进行分析即可。

一、编写实现最新世界大学四大排名的爬虫,并输出世界前100排名,中国前二十排名

  1. qs世界大学排名(调用相关的函数就可以输出对应的前多少的排名啦)

from pandas import DataFrame,Series
import pandas as pd
import requests
from bs4 import BeautifulSoup
import bs4allUniv = {'排名':[],'学校名称':[],'国家':[]}
url = '.htm'
#url = ''def getHTMLText(url):try:r = requests.get(url, timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return ""
#提取html的函数
def fillUnivList(soup):data00 = soup.find_all('div',class_ = "rankItem")data0 = data00[1].find_all('tbody')data = data0[0].find_all('tr')for tr in data[1:]:ltd = tr.find_all('td')if len(ltd) == 0:continueallUniv['排名'].append(ltd[0].string)allUniv['学校名称'].append(ltd[1].string)allUniv['国家'].append(ltd[3].string)
#将需要的信息放在一个字典的几个相应的列表中的函数,便于生成DataFramedef printUnivList(num,scope = "World"):if scope == "World":printWorldUnivlist(num)elif scope == "China":printChinaUnivlist(num)
#通过传入数字和排名种类打印出相应排名,默认打印世界排名
def printWorldUnivlist(num):print("{1:^2}   {2:{0}<30}".format(chr(12288),"排名","学校名称"))for i in range(0,num):  try:print("{1:^4}    {2:{0}<60}".format(chr(12288),df.ix[i]['排名'],df.ix[i]['学校名称']))except:continue
#打印世界排名前num的大学def printChinaUnivlist(num):print("{1:^2}   {2:{0}<30}".format(chr(12288),"排名","学校名称"))df_china = df[df['国家'] == '中国']for i in range(0,num):print("{1:^4}    {2:{0}<60}".format(chr(12288),df_china.index[i],df_china.iloc[i]['学校名称']))
#打印中国排名前num的大学html = getHTMLText(url)
soup = BeautifulSoup(html,'html.parser')
fillUnivList(soup)
df = DataFrame(allUniv)df.to_csv(r"C:/Users/ichigo/Desktop/qs.csv")

 

2.USNEWS世界大学排名

from pandas import DataFrame,Series
import pandas as pd
import requests
from bs4 import BeautifulSoup
import bs4allUniv = {'排名':[],'学校名称':[],'国家':[]}
url = ''def getHTMLText(url):try:r = requests.get(url, timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return ""
#提取html的函数def fillUnivList(soup):#data00 = soup.find_all('div',class_ = "rankItem")data0 = soup.find_all('tbody')data = data0[0].find_all('tr')for tr in data[1:]:ltd = tr.find_all('td')if len(ltd) == 0:continueallUniv['排名'].append(ltd[0].string)allUniv['学校名称'].append(ltd[1].string)allUniv['国家'].append(ltd[3].string)
#将需要的信息放在一个字典的几个相应的列表中的函数,便于生成DataFramedef printUnivList(num,scope = "World"):if scope == "World":printWorldUnivlist(num)elif scope == "China":printChinaUnivlist(num)
#通过传入数字和排名种类打印出相应排名,默认打印世界排名def printWorldUnivlist(num):print("{1:^2}   {2:{0}<30}".format(chr(12288),"排名","学校名称"))for i in range(0,num):  try:print("{1:^4}    {2:{0}<60}".format(chr(12288),df.ix[i]['排名'],df.ix[i]['学校名称']))except:continue
#打印世界排名前num的大学def printChinaUnivlist(num):print("{1:^2}   {2:{0}<30}".format(chr(12288),"排名","学校名称"))df_china = df[df['国家'] == '中国']for i in range(0,num):print("{1:^4}    {2:{0}<60}".format(chr(12288),df_china.index[i],df_china.iloc[i]['学校名称']))
#打印中国排名前num的大学html = getHTMLText(url)
soup = BeautifulSoup(html,'html.parser')
fillUnivList(soup)
df = DataFrame(allUniv)
for indexs in df.index:try:df['国家'].ix[indexs] = (df['国家'].ix[indexs]).strip()except:continue
df.to_csv(r"C:\Users\ichigo\Desktop\usnews.csv")
  1. 3. 上海交通大学软科学世界大学排名
  2. from pandas import DataFrame,Series
    import pandas as pd
    import requests
    from bs4 import BeautifulSoup
    import bs4allUniv = {'排名':[],'学校名称':[],'国家':[]}
    url = ''def getHTMLText(url):try:r = requests.get(url, timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return ""
    #提取html的函数def fillUnivList(soup):#data00 = soup.find_all('div',class_ = "rankItem")data0 = soup.find_all('tbody')data = data0[0].find_all('tr')for tr in data[1:]:ltd = tr.find_all('td')if len(ltd) == 0:continueallUniv['排名'].append(ltd[0].string)allUniv['学校名称'].append(ltd[1].string)allUniv['国家'].append(ltd[3].string)#将需要的信息放在一个字典的几个相应的列表中的函数,便于生成DataFrame       def printUnivList(num,scope = "World"):if scope == "World":printWorldUnivlist(num)elif scope == "China":printChinaUnivlist(num)
    #通过传入数字和排名种类打印出相应排名,默认打印世界排名def printWorldUnivlist(num):print("{1:^2}   {2:{0}<30}".format(chr(12288),"排名","学校名称"))for i in range(0,num):  try:print("{1:^4}    {2:{0}<60}".format(chr(12288),df.ix[i]['排名'],df.ix[i]['学校名称']))except:continue
    #打印世界排名前num的大学def printChinaUnivlist(num):print("{1:^2}   {2:{0}<30}".format(chr(12288),"排名","学校名称"))df_china = df[df['国家'] == '中国']for i in range(0,num):print("{1:^4}    {2:{0}<60}".format(chr(12288),df_china.index[i],df_china.iloc[i]['学校名称']))
    #打印中国排名前num的大学html = getHTMLText(url)
    soup = BeautifulSoup(html,'html.parser')
    fillUnivList(soup)
    df = DataFrame(allUniv)for indexs in df.index:try:df['国家'].ix[indexs] = (df['国家'].ix[indexs]).strip()except:continue
    #将某些“国家”对应字符串两边有空格的去掉空格df.to_csv(r"C:\Users\ichigo\Desktop\arwu.csv")

    4.THE世界大学排名


from pandas import DataFrame,Series
import pandas as pd
import requests
from bs4 import BeautifulSoup
import bs4allUniv = {'排名':[],'学校名称':[],'国家':[]}
url = '.htm'def getHTMLText(url):try:r = requests.get(url, timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return ""
#提取html的函数def fillUnivList(soup):#data00 = soup.find_all('div',class_ = "rankItem")data0 = soup.find_all('tbody')data = data0[0].find_all('tr')for tr in data[1:]:ltd = tr.find_all('td')if len(ltd) == 0:continueallUniv['排名'].append(ltd[0].string)allUniv['学校名称'].append(ltd[1].string)allUniv['国家'].append(ltd[6].string)
#将需要的信息放在一个字典的几个相应的列表中的函数,便于生成DataFrame        def printUnivList(num,scope = "World"):if scope == "World":printWorldUnivlist(num)elif scope == "China":printChinaUnivlist(num)
#通过传入数字和排名种类打印出相应排名,默认打印世界排名def printWorldUnivlist(num):print("{1:^2}   {2:{0}<30}".format(chr(12288),"排名","学校名称"))for i in range(0,num):  try:print("{1:^4}    {2:{0}<60}".format(chr(12288),df.ix[i]['排名'],df.ix[i]['学校名称']))except:continue
#打印世界排名前num的大学def printChinaUnivlist(num):print("{1:^2}   {2:{0}<30}".format(chr(12288),"排名","学校名称"))df_china = df[df['国家'] == '中国']for i in range(0,num):print("{1:^4}    {2:{0}<60}".format(chr(12288),df_china.index[i],df_china.iloc[i]['学校名称']))
#打印中国排名前num的大学html = getHTMLText(url)
soup = BeautifulSoup(html,'html.parser')
fillUnivList(soup)
df = DataFrame(allUniv)
for indexs in df.index:try:df['国家'].ix[indexs] = (df['国家'].ix[indexs]).strip()except:continue
#将某些“国家”对应字符串两边有空格的去掉空格
df.to_csv(r"C:\Users\ichigo\Desktop\THE.csv")

 

更多推荐

python爬虫 爬取大学排名

本文发布于:2024-02-10 19:11:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1676858.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:爬虫   大学排名   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!