python中requests库结合xpath爬取所有研究院校名称,通过Pyecharts的Map和Geo(需要大学的经纬度)绘制全国地图同时实现点击省份跳转功能

编程入门 行业动态 更新时间:2024-10-23 21:37:47

python中requests库结合xpath爬取所有研究院校名称,通过Pyecharts的Map和Geo(需要大学的<a href=https://www.elefans.com/category/jswz/34/1769711.html style=经纬度)绘制全国地图同时实现点击省份跳转功能"/>

python中requests库结合xpath爬取所有研究院校名称,通过Pyecharts的Map和Geo(需要大学的经纬度)绘制全国地图同时实现点击省份跳转功能

引言

临近毕业季,毕设的压力时在心头,我们的毕设和考研有关,这里分享一下心得。只能说太难了!

安装

python版本

python3.8.8

开发环境

系统:windows10
编译器:sublimetext(随意,喜欢哪个自己选)

第三方库

  • lxml
  • numpy
  • pandas
  • requests
  • xlrd
  • xlwt
  • pyecharts


    注意:我安装的版本都是当时最新的



数据爬取和处理

第一步 获取所有研究院校名称

百度了所有的研究院校名单感觉不太靠谱,想到了研招网,作为研究生必备的官方网站必定可靠,所以决定爬取院校库中所有大学名称数据。

链接:研招网院校库

分析网页得知以下信息:

  • 数据总共43页
  • url最后变化的只有“?start=”后面的数字,第一页为0
  • 查看源代码,所有的数据在一个tbody标签下的tr标签中
  • 每个tr中第一个td标签下a标签中的文本就是大学名称

代码:

import requests
from lxml import etree
import re# 爬虫
def spider(url,info):re = requests.get(url)  # get请求获取网页re.encoding='utf-8'  # 设置编码防止文字乱码html = re.text  # 获取页面数据selector = etree.HTML(html)contents = selector.xpath("//table[@class='ch-table']/tbody/tr")  # 获取所有的tr标签数据,格式为列表for data in contents:name = str(data.xpath("./td[1]/a/text()")[0])  # 获取大学名称info.append(name.strip())  # 加入info列表中,strip去除字符串两端空格def save(info):f = open("school_name.txt", 'w',encoding='utf-8')  # w方式创建文件,默认会覆盖原有同名文件的数据,设置编码为utf-8for name in info:f.write(name+"\n")  # 循环写入大学名称,后面加了换行符实现一个名称占据一行f.close()def main():infos = []  # 初始化的列表,注意在python中列表传入函数中被修改后会保存修改,利用这个特性保存爬虫数据base_url = "/?start="  # 网站基础urloffset = 0 # 偏移量for i in range(0,43):  # 循环爬取所有页面的数据url = base_url + str(offset)spider(url, infos)offset += 20print("当前爬取进度为{}/43".format(i+1))save(infos)  # 调用save函数存储数据到本地if __name__ == "__main__":main()

运行完成程序,在同级目录下获得了“school_name.txt”文件

可以再放入xls中方便以后使用,代码如下:

import xlwtf = open('school_name.txt','r',encoding='utf-8')  # 打开文件
datas = f.readlines()  # 读取所有行book = xlwt.Workbook(encoding='utf-8',style_compression=0)
sheet = book.add_sheet('mysheet',cell_overwrite_ok=True)
sheet.write(0,0,'name')  # 写入字段名称length = len(datas)  # 统计datas列表元素个数
print(length)i = 1
j = 0
for line in datas:sheet.write(i, j, line.strip("\n"))  # 注意起始位置为第二行(i=1),第一行为字段名称i+=1
print("结束")
book.save('school_name.xls')  # 保存文件为xls
f.close()      

school_name.xls

第二步 获取所有研究院校的经纬度

我找了很久,免费的很少而且数据不太对劲,而需要积分的看到评论说骗子(本人也没CSDN积分)所以决定自己整理一下。既然找不到现成的数据我们就去爬取但是没有发现这样的网站,突然灵机一动。
百度:经纬度批量查询

果然有这样的工具,那就不客气了,直接将第一步爬取的所有大学名称放进去,大功告成?

NO,都是坑啊,当我兴高采烈的把最后的地图画出来了时候好家伙一片空白,怎么可能,都是我的心血啊,好烦……
没办法,回去检查数据,唉好家伙所有经纬度都一样,于是又换了一个,最后实验证明这个网站:/ 还算可靠,而且他会帮你生成xls文件可以下载到本地,可惜还是不尽如人意。

有不需要的字段,无所谓,删;数据缺失,没关系不多,用百度地图的坐标拾取系统一个一个查询;但是经过对比发现部分数据还是不对劲(似乎有些院校名称有问题或者有保密什么策略官网上都不写位置),就这样吧,大差不差。

整理成研究生经纬度.txt文件:

放入excel中,代码:

import xlwtf = open('研究院校经纬度.txt','r',encoding='utf-8')
book 

更多推荐

python中requests库结合xpath爬取所有研究院校名称,通过Pyecharts的Map和Geo(需要大学的经纬度)绘制全国地图同时实现点击省份跳转功

本文发布于:2024-02-26 21:14:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1703928.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:经纬度   跳转   省份   院校   名称

发布评论

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

>www.elefans.com

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