python 爬阳光高考高校数据_爬取阳光高考-程序员宅基地

技术标签: python  1024程序员节  

import json
import time
from requests_html import HTMLSession


# 爬取阳光高考院校库
def get_school_data():
    # 开启会话
    session = HTMLSession()
    # 初始化院校列表
    school_list = []
    # 分页参数,起始位置
    start = 1
    # 分页参数,每页条数,阳光高考院校库默认为20条/页
    limit = 10
    # 开始执行时的时间
    start_time = time.time()
    print("阳光高考院校库爬取任务")
    print("开始执行...")
    # 分页循环获取
    while True:
        # 阳光高考院校库查询网址
        # url = 'https://gaokao.chsi.com.cn/sch/search.do?searchType=1&start=' + str(start)
        url = 'https://gaokao.xdf.cn/college/china/searchSchool/_____'+str(start)
        # 获取请求到的html
        r = session.get(url)
        # 从中获取到院校库的table中的所有文字
        result = r.html.find("body > div.main > div.container > div.main-table > table > tbody > tr")

        # 初始化本次循环的数据列表
        this_list = []
        for res in result:
            text = res.text
        # 通过.将字符串拆分为数组,对本次循环获取到的分页数据进行循环处理
            # 每一条数据通过换行符拆分为数组
            arr = text.split("\n")
            # 初始化院校信息
            school = {}
            # 如果长度为1,则为通过.拆分时的最后一条无用信息,直接跳过
            if len(arr) == 1:
                continue

            if len(arr) == 9:
                school.update({"name": arr[0], "area": arr[1], "property": arr[2], "type": arr[3], "level": arr[4], "attrs": arr[5]})
            else:
                school.update({"name": arr[0], "area": arr[1], "property": "", "type": "", "level": "", "attrs": ""})
            # property = ""
            # if not arr[2]:
            #   property = arr[2]
            #
            # type = ""
            # if not arr[3]:
            #     type = arr[3]
            #
            # level = ""
            # if not arr[4]:
            #     level = arr[4]
            #
            # attrs = ""
            # if not arr[5]:
            #     attrs = arr[5]
            #
            # if property is None:
            #      property = ""
            #
            # if type is None:
            #      type = ""
            #
            # if level is None:
            #     level = ""
            #
            # if attrs is None:
            #     attrs = ""



            # 将院校追加到本次循环结果的数组中
            this_list.append(school)
            # 将院校追加到总的结果中
            school_list.append(school)
        print("爬取第 " + str(int(start)) + " 页,本页获取到 " + str(len(this_list)) + " 条数据")
        # 如果本次分页循环的长度小于分页的每页长度,说明本次为最后一页数据,数据读取完毕,终止循环
        if len(this_list) < limit:
            break
        # 否则起始位置需要加上一页
        start += 1
    # 执行完毕时的时间
    end_time = time.time()
    print("执行完毕,耗时 " + str(round(end_time - start_time, 2)) + " 秒,共获取到 " + str(len(school_list)) + " 条数据")
    # 关闭会话
    session.close()
    # 返回结果
    return school_list


# 保存为JSON数组
def save_json_data(school_list):
    data = open('./data.json', 'w')
    data.write(json.dumps(school_list, ensure_ascii=False, ).encode("utf8").decode())
    print("已保存为JSON数组(./data.json)")


# 保存为SQL可执行文件
def save_sql_file(school_list):
    school_sql = "insert into ant_user_school(name,area,property,type,level,attrs) values "
    for school in school_list:
        school_sql += "('" + school["name"] + "','" + school["area"] + "','" + school["property"] + "','" + school["type"] + "','" + school["level"] + "','" + school["attrs"] + "'),"
    if school_sql.endswith(","):
        school_sql = school_sql[0:-1]
    data = open('./data.sql', 'w')
    data.write(school_sql)
    print("已保存为SQL可执行文件(./data.sql)")


data = get_school_data()
# save_json_data(data)
save_sql_file(data)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39175589/article/details/120941940

智能推荐

Python面向对象项目练习:商品信息管理系统_python商品信息管理系统-程序员宅基地

文章浏览阅读4.6k次,点赞13次,收藏106次。1、编写一个商品库存信息管理系统,用户根据操作菜单进行相关操作2、该系统可对商品进行增、删、查、统计等基本操作。_python商品信息管理系统

NOIP算法概论-程序员宅基地

文章浏览阅读443次。之前高一参加比赛前,曾写过总结,主要是提醒自己NOIP所需要的基本算法,以及至少所需要掌握的数据结构。当然,NOIP,最重要的算法,只有一个,THAT IS “搜索大法”练好了搜索,今后的所有竞赛,题目哪怕拿不了满分,至少30+,说不定60+。自己脑补一下优化,100分就到手啦。。。第一篇正儿八经的博客(别管前面那篇):请各位OIER们,一定一定,要练习搜索,必须练习搜索,而且搜索MU...

用gcc编译器实现PC编程_gcc怎么使用pc文件-程序员宅基地

文章浏览阅读619次。1、下载gcc编译器2、配置系统环境变量3、创建项目文件夹4、dos窗口进行转换和编译5、使用文件进行调用环境变量6、生成可执行文件_gcc怎么使用pc文件

Windows平台上的5种敏捷软件开发(过程)模型_敏捷模型-程序员宅基地

文章浏览阅读1.4k次。Windows平台上的5种敏捷软件开发(过程)模型_敏捷模型

软考高项 : (05)论信息系统项目的风险管理_项目同其他经济活动一样存在风险,项目管理者必须对风险实施有效的管理。项目风险-程序员宅基地

文章浏览阅读2.5k次,点赞4次,收藏12次。5[论文]论信息系统项目的风险管理项目同其他经济活动一样存在风险,项目管理者必须对风险实施有效的管理,项目风险管理包活进行风险管理计划编制,对项目风险通行识别,分析,应对和监控的过程,完全避免或者消除风险,或者只享受权益而不承担风险,是不可能的,主要风险清单是一个重要的风险管理工具,它指明了项目在任何时候面临的最大风险,是不可能的。通过对主要风险进行追踪并建立应对措施。可以使项目经理保持较强的风..._项目同其他经济活动一样存在风险,项目管理者必须对风险实施有效的管理。项目风险

【算法4】--- 栈(python)_python stack-程序员宅基地

文章浏览阅读3.3k次,点赞7次,收藏36次。栈(stack)是限定仅在表尾进行插入和删除操作的线性表。栈是后进先出(Last In First Out, LIFO)的_python stack

随便推点

2010年5月12日Go生态洞察:Google I/O即将举办的Go事件-程序员宅基地

文章浏览阅读7.4k次。 猫头虎博主报道!Go语言爱好者们,你们准备好迎接Google I/O 2010的Go语言盛宴了吗?在本篇博客中,我将为你揭晓即将发生的与Go相关的精彩事件。无论你是对“Go语言新手教程”还是“Go语言高级编程”感兴趣,都不要错过即将在旧金山Moscone中心举办的Google I/O。准备好你的问题,和Go团队面对面,现场获取答案吧!Go语言在Google I/O 2010的活动将是一次关于Go语言学习和交流的盛会。这不仅是了解Go语言最新动态的机会,也是一个与Go语言专家和社区互动的平台。

javaWeb网上拍卖系统--秒杀与竞拍-程序员宅基地

文章浏览阅读819次,点赞15次,收藏14次。需求分析通俗的来说就是对一般用户的需求进行分析处理,通过充分了解用户需求进而把目标系统大致架构出来。需求分析第一要务就是对实际要处理的对象进行全面的调查,要对所调查目标的对象进行充分的了解,了解之后才能真正确定下来用户所需要的也切合实际情况的系统,最终才能根据该情况确定系统所应该拥有的各种功能。本次设计的网上拍卖系统亦是如此。

我的WCF之旅(10):如何在WCF进行Exception Handling-程序员宅基地

文章浏览阅读67次。在任何Application的开发中,对不可预知的异常进行troubleshooting时,异常处理显得尤为重要。对于一般的.NET系统来说,我们简单地借助try/catch可以很容易地实现这一功能。但是对于 一个分布式的环境来说,异常处理就没有那么简单了。按照面向服务的原则,我们把一些可复用的业务逻辑以Service的形式实现,各个Service..._wcf exception.type

iOS 直播技术及Demo_ios直播懂的-程序员宅基地

文章浏览阅读1.4w次,点赞4次,收藏24次。要过年了,新年快乐,今天写一些关于iOS直播技术相关知识,及详细Demo介绍,首先请下载DemoDemo下载地址(点击跳转下载)一.直播介绍1.1.直播现状近年来,直播越来越火,但直播技术却对软件开发人员技术要求很高,因为直播中运用到的技术难点非常之多,视频/音频处理,图形处理,视频/音频压缩,CDN分发,即时通讯等技术,个人很难开发出来。但现在已经有了各个领域的大神,封装出了各种牛逼..._ios直播懂的

浅谈深度学习_深度学习csdn-程序员宅基地

文章浏览阅读6.6k次。1 绪论机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等学科。专门研究计算机如何模拟或者实现人类的学习行为,来获取新的知识或技能,并重组已有的知识结构使之不断改善自身的性能。他是人工智能核心,是使计算机具有智能的根本途径。深度学习(DL,Deep Learning)是机器学习(ML,Machine Learning)领域中一个新的研究方向,他被引入机器学习使其更接近于最初的目标——人工智能(AL,Aritifical Intelligence)。2 深度学习的发展1_深度学习csdn

_ZN10tensorflow8internal21CheckOpMessageBuilder9NewStringEv_undefined symbol: _zn10tensorflow8internal21checko-程序员宅基地

文章浏览阅读628次。undefined symbol: _ZN10tensorflow8internal21CheckOpMessageBuilder9NewStringEv这是一类错误。问题的指向编译没有编译成功。前面的错误tensorflow.python.framework.errors_impl.NotFoundError: /home/wjay/deeplearning/PU-GAN/PU-GAN-master/tf_ops/sampling/tf_sampling_so.so:这是告诉你哪个文件没有编.._undefined symbol: _zn10tensorflow8internal21checkopmessagebuilder9newstringe

推荐文章

热门文章

相关标签