Python 3爬取全国高校基本信息

最近接了一个单子,是爬取全国高校的基本信息,高校名字,高校层次,高校地区,招生办电话,招生办官网~

镇楼图如下:

信息源网址是: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()
发布了395 篇原创文章 · 获赞 126 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/memory_qianxiao/article/details/96484694