2 Star 3 Fork 2

starsgod/CSDN资源库

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
大学地域排名.py 4.18 KB
一键复制 编辑 原始数据 按行查看 历史
starsgod 提交于 2021-04-19 17:06 +08:00 . update 大学地域排名.py.
import requests
from lxml import etree
import xlwt
# 爬虫函数
def spider(url, datas):
re = requests.get(url)
re.encoding = 'utf-8'
html = re.text
selector = etree.HTML(html)
contents = selector.xpath("/html/body/main/div/div[2]/div/table/tbody/tr") # 数据格式为列表存储
# print("contents:", contents)
for content in contents:
data = [] # 循环创建一个空列表放入不同大学的所有数据
ranking = content.xpath("./td[1]/text()")[0] # 大学在地域的排名
# print(ranking,type(ranking))
name = content.xpath("./td[2]/a/text()")[0] # 大学名称
# print(name)
score = content.xpath("./td[3]/text()")[0] # 大学评分
# print(score)
area = content.xpath("./td[4]/text()")[0] # 大学所在省份或直辖市
# print(area)
data.append(str(ranking))
data.append(str(name))
data.append(str(score))
data.append(str(area))
datas.append(data) # datas每一个元素为一个列表,即data
# 存储原始数据到xls文件中
def save_excel(datas):
book = xlwt.Workbook(encoding='utf-8', style_compression=0)
sheet = book.add_sheet("mysheet", cell_overwrite_ok = True)
sheet.write(0, 0, "ranking")
sheet.write(0, 1, "name")
sheet.write(0, 2, "score")
sheet.write(0, 3, "area")
i = 1 # 数据开始位置为第二行
for data in datas:
print(data)
for info in range(len(data)):
print(info)
sheet.write(i, info, data[info])
i += 1
print("大学地域排名写入完成\n")
book.save('大学地域排名.xls')
# 存储数据到本地
def save_txt(datas):
file1 = open('研究院校经纬度.txt','r',encoding='utf-8')
file2 = open('finally.txt', 'w', encoding='utf-8')
lines = file1.readlines() # 读取所有行
"""
file1为所有的院校名称和经纬度,这里我们筛选出需要展示在地图上的不同省份的排名靠前的大学,
将他们的经纬度和名称放入finally.txt中
"""
for line in lines:
line = line.strip('\n').split(',') # strip去除字符串后换行符,split分割数据为列表
for data in datas:
if data[1] in line: # data[1]为大学名称
line.append(data[0]) # ranking 排名
line.append(data[2]) # score 评分
line.append(data[3]) # area 地区
print(line)
file2.write(','.join(line)+"\n") # join将列表元素拼接,拼接符为可以自定义,这里为逗号,记得加换行符,不要数据都在一行
break # 如果是我们要的大学,写入数据后跳出循环,继续验证下一个大学
else:
continue # 如果在当前行没有找到大学名称,结束这次循环,继续下一行寻找
file1.close()
file2.close()
# 将finally.txt文件写入excel中方便操作
book = xlwt.Workbook(encoding='utf-8', style_compression=0)
sheet = book.add_sheet("mysheet", cell_overwrite_ok = True)
sheet.write(0, 0, "name")
sheet.write(0, 1, "jingdu")
sheet.write(0, 2, "weidu")
sheet.write(0, 3, "ranking")
sheet.write(0, 4, "score")
sheet.write(0, 5, "area")
f = open('finally.txt', 'r', encoding='utf-8')
infos = f.readlines()
length = len(infos)
for i in range(1, length+1):
l = infos[i-1].strip('\n').split(',')
# print(l)
words = len(l)
for j in range(words):
sheet.write(i, j, l[j])
print("finally.xls入完成\n")
book.save('finally.xls')
f.close()
def main():
datas = [] # 初始化的datas,可以在函数修改保存
base_url = "http://www.nseac.com/eva/GEEA.php?DDLyear=2020&DDLThird="
for i in range(1,32):
url = base_url + str(i)
spider(url, datas)
print("当前进度为{}/31\n".format(i))
print("完成所有爬取任务\n")
# save_excel(datas)
save_txt(datas)
if __name__ == "__main__":
main()
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/starsgod/csdn-resource-library.git
git@gitee.com:starsgod/csdn-resource-library.git
starsgod
csdn-resource-library
CSDN资源库
master

搜索帮助