爬取 https://www.shanghairanking.cn/rankings/bcur/2022 网i5 内容,解析数据,并将中国大学排名信息保存到a.t 文件。
需要安装requests、lxml 库
import requests
from lxml import etree
import os
# 定义函数
def spyder(url):
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36"}
html = requests.get(url,headers=headers)
content = etree.HTML(html.content)
# 获取排名
order = content.xpath('//*[@id="content-box"]/div[2]/table/tbody/tr/td[1]/div/text()')
# 获取学校名称
name = content.xpath('//*[@id="content-box"]/div[2]/table/tbody/tr/td[2]/div/div[2]/div[1]/div/div/a/text()')
# 存储的文件路径
filepath = "a.t"
# 如果文件已存在删除文件
if (os.path.exists(filepath)):
os.remove(filepath)
# 将数据写入文件中(追加写,当文件不存在时会自动创建)
file = open(filepath,"a+")
# 同时循环遍历order,name两个集合
for o,n in zip(order,name):
# 去除排序值左右两边多余的空格
o = o.strip()
file.write("排名:"+str(o)+"\t学校名称:"+n+"\n")
# 关闭文件
file.close()
# 定义网址调用函数
url = "https://www.shanghairanking.cn/rankings/bcur/2022"
spyder(url)