这个API是第三方API,第三方API的工作原理大都基于此,本文主要起一反三之作用,代码的不处周之还望及时指出。

开发环境:WinServer2012 + php7.0 + Apache2.4.8

思路:向官方查询界面传递参数,使用curl抓取结果网页,分析网页取出关键数据,将关键数据规则化后返回。

基本思路

抓取网址:http://www.chsi.com.cn/cet/ 通过显式传参方式传递姓名,学号等信息。

关键代码:

curl会话

初始化一个curl会话,访问请求的网址(保存在变量$_url中),获取网页源代码后关闭会话,其中第三行代码作用为伪造访问来路,防止传参失败。

运行成功后$contents内容为网页源代码,若第四行代码参数为FALSE则直接将网页源码抓取后显示,TRUE为不显示(此处不显示,做数据分析用)。

使用正则表达式抓取数据,查询成功时页面会显示相应学校,成绩,个人信息等。查询失败时会显示姓名错误或者考号长度有问题等,根据不同的关键字使用正则表达式抓取关键数据。

正则表达式

preg_match_all使用方法:参数1:正则表达式,参数2:目标字符串,参数3:匹配结果。将contents变量中的匹配结果保存在type变量中。

每次匹配后检测type变量值,以判断查询是否成功。以及决定各种状态的返回代码。

错误码返回示例

其余的错误码返回方式如下:

参数检测的错误码返回

错误信息处理,返回Json格式打包后的错误代码以及错误信息(字符串数组为对象格式)

strip_tags($array); 去掉变量array中的HTML标签,此处的作用为去掉正则表达式匹配后遗留下来的标签等

trim($array); 去掉变量array两边的空白符

使用strip_tags去掉正则表达式匹配结果中的html标签,然后用trim去掉结果两边的空格,最后将数组打包并转化为对象,然后转化为Json格式后输出。

$arr_return=(object)array((object)array(0,"success"),(object)array(trim(strip_tags($type_1[0][0])),trim(strip_tags($type_1[0][1])),trim(strip_tags($type_1[0][2])),trim(strip_tags($type_1[0][4]))),(object)array(trim(strip_tags($type_2[0][1])),trim(strip_tags($type_2[0][2])),trim(strip_tags($type_2[0][3]))));

打包格式如上,使用二维数组,第一维中放返回码及查询状态,第二维中放返回的各种信息等。若查询失败则第一维中放返回码以及查询状态,第二维为空。

四六级php,详解四六级查询API+网页相关推荐

  1. mybatis 鉴别其_MyBatis之Mapper XML 文件详解(四)-JDBC 类型和嵌套查询

    MyBatis之Mapper XML 文件详解(四)-JDBC 类型和嵌套查询 白玉 IT哈哈 支持的 JDBC 类型 为了未来的参考,MyBatis 通过包含的 jdbcType 枚举型,支持下面的 ...

  2. 【NLP】四万字全面详解 | 深度学习中的注意力机制(四,完结篇)

    作者 | 蘑菇先生 知乎 | 蘑菇先生学习记 深度学习Attention小综述系列: 四万字全面详解 | 深度学习中的注意力机制(一) 四万字全面详解 | 深度学习中的注意力机制(二) 四万字全面详解 ...

  3. 【NLP】四万字全面详解 | 深度学习中的注意力机制(二)

    NewBeeNLP原创出品 公众号专栏作者@蘑菇先生 知乎 | 蘑菇先生学习记  前情提要:四万字全面详解 | 深度学习中的注意力机制(一) 目前深度学习中热点之一就是注意力机制(Attention ...

  4. linux 进程间通信 dbus-glib【实例】详解四(上) C库 dbus-glib 使用(附代码)(编写接口描述文件.xml,dbus-binding-tool工具生成绑定文件)(列集散集函数)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  5. kinux查日志_Linux实时查看日志的四种命令详解

    原标题:Linux实时查看日志的四种命令详解 如何在Linux中实时查看日志文件的内容?那么有很多实用程序可以帮助用户在文件更改或不断更新时输出文件的内容.在Linux中实时显示文件内容的常用命令是t ...

  6. 【NLP】四万字全面详解 | 深度学习中的注意力机制(三)

    NewBeeNLP原创出品 公众号专栏作者@蘑菇先生 知乎 | 蘑菇先生学习记 深度学习Attenion小综述系列: 四万字全面详解 | 深度学习中的注意力机制(一) 四万字全面详解 | 深度学习中的 ...

  7. Android Studio 插件开发详解四:填坑

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78265540 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  8. springboot 详解 (四)redis filter

    ---------------------------------------------------------------------------------------------------- ...

  9. 数据结构--图(Graph)详解(四)

    数据结构–图(Graph)详解(四) 文章目录 数据结构--图(Graph)详解(四) 一.图中几个NB的算法 1.普里姆算法(Prim算法)求最小生成树 2.克鲁斯卡尔算法(Kruskal算法)求最 ...

最新文章

  1. ubuntu16.04 svn搭建多项目搭建多个版本仓
  2. QML TableView表格使用示例
  3. pyinstaller的使用方法 by 王大龙
  4. 个人技术博客Alpha----Android Studio UI学习
  5. 从像素坐标到相机坐标_【视觉知识】机器视觉几何坐标概论
  6. 什么人都可以媚俗,但大学校长不能
  7. Mozilla为Firefox添加新的CSRF保护
  8. 去除NSLog时间戳及其他输出信息
  9. 计算机里pow函数是什么,pow函数是什么?
  10. java设置随机数_java设置随机数教程
  11. npm create vite@latest 失败
  12. ToDoList本地存储原生js版/jQuery版
  13. PVM and MPI 比较
  14. Linux操作系统的性能将主要取决于,高校邦Linux操作系统安全与性能调优章节测试答案...
  15. MySQL连接查询—自身连接
  16. 一块硬盘装了黑苹果 一块硬盘装了win7_十分钟学会自己装电脑系统! 看完这篇,咱们单枪匹马,不求人,就是干!...
  17. 解决win10系统桌面应用图标显示不出来的问题
  18. 关于.NET操作Office(Office PIA)
  19. linux 安装 wget 失败 未知错误
  20. 云计算运营—03 KVM虚拟化技术方案介绍

热门文章

  1. 网页里如何使用js禁用控制台
  2. Python读取Json字典写入Excel表格的方法
  3. PHP学习笔记--抽象类和抽象方法的应用
  4. Oracle中主键自增长
  5. 《SpringBoot揭秘 快速构建微服务体系》读后感(三)
  6. BZOJ 1026 [SCOI2009]windy数
  7. Oracle中procedure和function创建举例
  8. SQL 字符串分割表函数
  9. sqlite3x library
  10. hibernate中的Annotation补充