最近接了一个单子,是爬取全国高校的基本信息,高校名字,高校层次,高校地区,招生办电话,招生办官网~
镇楼图如下:
信息源网址是:https://gkcx.eol.cn/
开发环境:python3.6(最新3.7也可以的) +pycharm
第三放库:request(网页级请求库),pymysql(l操作mysql库),json(python和json互转的库)其余库自带
思路就参考前面同前面的文章(最近越来越懒了,请见谅博客都没怎么写了,思路也是...被高数折磨的哭唧唧的~),代码都差不多,只是请求地址变了,思路也差不多,思路参考请点击传送门:传送门
接下来就公布源码:点击Github下载,传送门:传送门
或者观看博客也行,如下:
# -*- coding: utf-8 -*-
# @Filename: 全国高校数据信息.py
# @Time : 2019/7/19 12:31
# @Author : LYT
"""
https://static-data.eol.cn/www/school/140/info.json
"""
import requests,re,xlwt,json,pymysql
def Get_html(url):
try:
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3676.400 QQBrowser/10.4.34"
}
r=requests.get(url,headers=headers)#带请求参数params
r.encoding=r.apparent_encoding
print("请求服务成功!")
#print(r.text)
return r.text
except:
print("请求失败")
def Get_info(url,id):
url_api = "https://static-data.eol.cn/www/school/"#请求ajax api
url=url_api+str(id)+"/info.json"
basic_info=[]#存高校基本信息
# *******************************************#
# ****************数据库配置******************#
# *******************************************#
# *******************************************##
try:
conn = pymysql.connect(
host="localhost", # mysql本机连接 或者写127.0.0.1也可以连接远程数据库
user="test", # 数据库用户名称
passwd="123", # 密码
db="高校基本信息", # 连接的数据库名字
port=3306 # 端口
)
except pymysql.Error as e:
print("连接失败:%s" % e)
cursor = conn.cursor()
name=""
infoes=json.loads(Get_html(url))
name=infoes['name']
basic_info.append(infoes['name'])#学校名字
level=""#高校层次
if infoes['f985']=='1'and infoes['f211'] == '1': level += "985 211"#判断高校层次
elif infoes['f211'] == '1': level +="211"
else:level+=infoes['level_name']
basic_info.append(level)
basic_info.append(infoes['type_name'])#高笑类型
loacl=infoes['province_name']+infoes['town_name']#高校地区
basic_info.append(loacl)
basic_info.append(infoes['phone'])#招生办电话
basic_info.append(infoes['site'])#招生办官网
print(basic_info)
print("***********正在写入数据库%s高校基本信息数据**********" % name)
sql= "insert into 全国高校基本信息(学校名称,高校层次,高校类型,高校地区,招生办电话,招生办官网)values(%s,%s,%s,%s,%s,%s)"
cursor.execute(sql,(basic_info))
conn.commit() # 数据库数据提交
conn.close() # 关闭数据库连接
print(name+"数据已经保存完毕!")
def main():
# *******************************************#
# ****************数据库配置******************#
# *******************************************#
# *******************************************##
try:
conn = pymysql.connect(
host="localhost", # mysql本机连接 或者写127.0.0.1也可以连接远程数据库
user="test", # 数据库用户名称
passwd="123", # 密码
db="高校基本信息", # 连接的数据库名字
port=3306 # 端口
)
except pymysql.Error as e:
print("连接失败:%s" % e)
cursor = conn.cursor()
sql = """create table %s(
id int(20) not null primary key auto_increment,
学校名称 varchar(255),
高校层次 varchar(255),
高校类型 varchar(255),
高校地区 varchar(255),
招生办电话 varchar(255),
招生办官网 varchar (255))"""
cursor.execute(sql % ("全国高校基本信息"))
conn.commit() # 数据库数据提交
for id in range(30,3000):
try:
url="https://gkcx.eol.cn/school/"+str(id)
print(url)
Get_info(url,id)
except:
continue
if __name__ == '__main__':
main()