四六级php,详解四六级查询API+网页

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

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

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

10d976bae890?from=timeline

基本思路

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

关键代码:

10d976bae890?from=timeline

curl会话

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

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

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

10d976bae890?from=timeline

正则表达式

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

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

10d976bae890?from=timeline

错误码返回示例

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

10d976bae890?from=timeline

参数检测的错误码返回

错误信息处理,返回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]))));

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257476.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

终于把joomla 的 protostar 模版的菜单,从垂直改到水平了

protostar-applying-menu-class-suffixes-horizontal-vs-vertical-menus.html joomla 3.7.5 附带的这个template , 菜单丑的要死。 估计是新改的。 看网上的其他站点都没这毛病。 最后终于找到解决方法了。“ nav-pills“ 前面是有空格的 To make the menu horizonal, you can …

Find non-overlap jobs with max cost

Given a set of n jobs with [start time, end time, cost] find a subset so that no 2 jobs overlap and the cost is maximum.Job: (start_time, end_time] --- cost 如果只是求maxCost, 一维就可以做。 但是如果要知道有选了哪些job,则需要存成二维。…

优酷视频整段代理php,thinkphp仿优酷带数据源码|php仿优酷视频源码带后台功能强大...

本项目是仿优酷官网,优酷官网是一个集多种知识面为一体的网站,能全面的锻炼我们的技能,所以我们决定仿优酷网。本项目后台主要实现了:用户管理、分类管理、视频管理、评论管理、权限管理、轮播管理、网站配置和广告管理以及登录退出等模块。前…

Centos7安装Oracle JDK

查看Linux是否自带的JDK,如有openJDK,则卸载1 java -version 1 rpm -qa | grep -E ^open[jre|jdk]|j[re|dk] 卸载openjdk1 su root 2 3 yum -y remove java java-1.7.0-openjdk 下载oracle jdk1 wget --no-cookies --header "Cookie: oraclelice…

前端每周清单第 30 期:WebVR 指南,Vue 代码分割范式,理想的 React 架构特性

前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点;分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目。欢迎关注【前端之巅】微信公众号(ID:frontshow&#xff…

多线程面试题系列(12):多线程同步内功心法——PV操作上

上面的文章讲解了在Windows系统下实现多线程同步互斥的方法,为了提高在实际问题中分析和思考多个线程之间同步互斥问题的能力,接下来将讲解PV操作,这也是操作系统中的重点和难点。本文将会先简要介绍下PV操作的来源和基本使用方法&#xff0c…

软件测试作业——三

作业见《软件测试基础》中文版49页第7题。英文版63页 a) b) 令MAXPRIMES 4,t1不能检查出错误,t2发生数组越界,使得t2比t1更容易发现。 c)t3(n1) d)节点覆盖:TR{1,2,3,4,5&#xff0…

SQL2008使用json.net实现XML与JSON互转

借助CLR&#xff0c;首先实现字符串的互转&#xff0c;然后使用存储过程实现JSON2table public class JsonFunction { /// <summary> /// XML转JSON /// </summary> /// <param name"xml"></param> /// <returns></returns> ///…

黑胡桃木php,揭秘美国黑胡桃木的美

家具是艺术和文化的载体&#xff0c;人们对木的喜爱&#xff0c;是一种与生俱来的情怀。好的木材淳厚质朴、温润坚定&#xff0c;有着不动声色的力量。美国黑胡桃木(亦称黑核桃木)便是如此&#xff0c;“身体”中散发着让人无法抗拒的魅力&#xff01;美国黑胡桃木体现的是“深…

c mysql备份还原数据库,MySQL数据库备份与恢复方法

常有新手问我该怎么备份数据库&#xff0c;下面介绍3种备份数据库的方法&#xff1a;(1)备份数据库文件MySQL中的每一个数据库和数据表分别对应文件系统中的目录和其下的文件。在Linux下数据库文件的存放目录一般为/var/lib/mysql。在Windows下这个目录视MySQL的安装路径而定&a…

第四篇:白话tornado源码之褪去模板外衣的前戏

加班程序员最辛苦&#xff0c;来张图醒醒脑吧&#xff01; ... ... ... 好了&#xff0c;醒醒吧&#xff0c;回归现实看代码了&#xff01;&#xff01; 执行字符串表示的函数&#xff0c;并为该函数提供全局变量 本篇的内容从题目中就可以看出来&#xff0c;就是为之后剖析tor…

LFS(Linux From Scratch)学习

一、环境准备 使用Debian平台&#xff0c;需做如下环境检查&#xff1a; 1、检查各个需要的工具及内核版本号&#xff0c;看看是否符合lfs7.7的列表要求 2、检查需要用到的库&#xff0c;一共有三个&#xff0c;gmp, mpfr和mpc 工具检查脚本如下&#xff1a; #filename:check_e…

LaTeX 安装配置 OSX

LaTeX 安装配置 OSX官方网站&#xff1a;http://www.latex-project.orghttp://www.tug.org/mactex/http://pages.uoregon.edu/koch/BasicTeX.pdf完整的Tex超过2G&#xff0c;一般用户没必要&#xff0c;可以先安装BasicTeX&#xff0c;当有需要时include必要的库即可1.安装Basi…

告警系统邮件引擎

2019独角兽企业重金招聘Python工程师标准>>> 20.23-20.25 告警系统邮件引擎 创建发邮件的脚本——mail.py [rootlocalhost mail]# pwd /usr/local/sbin/mon/mail[rootlocalhost mail]# vim mail.py #!/usr/bin/env python #-*- coding: UTF-8 -*- import os,sys rel…

【HTTP 2】简介(Introduction)

前情提要 在上一篇文章《【HTTP 2.0】 序言》中&#xff0c;我们简要介绍了 HTTP 2 协议的概要和协议状态。 在本篇文章中&#xff0c;我们将会了解到 HTTP 2 协议简介&#xff08;Introduction&#xff09;部分的内容。 简介&#xff08;Introduction&#xff09; 超文本传输协…

SSD硬盘 全盘安全擦除

此文From http://ssd.zol.com.cn/575/5753057.html 在SSD固态硬盘的使用过程中&#xff0c;部分用户可能会碰到计算机意外掉电或死机并强行断电后&#xff0c;系统出现异常&#xff0c;扫描SSD后发现坏块&#xff0c;然后一着急一跺脚甚至想返厂维修。 其实掉电后固态硬盘出现坏…

2017敏捷沙滩大会:完美软件,测量持续交付,以及探索未来

在英国康沃尔郡举行的2017敏捷沙滩大会上&#xff0c;数百名演讲者和参与者共聚一堂&#xff0c;探讨敏捷和后敏捷领域软件开发方法有哪些最新进展。本次大会最后一个下午的要点包括&#xff1a;交付团队可以通过拥抱精益、迭代和持续的部署方法更快速地实现业务价值&#xff1…

做fzu oj 1045 做减法学到的sprintf()函数

题目 做题一直输不出答案&#xff0c;于是就上网去百度了这题的解题&#xff0c;发现解答十分的简短&#xff0c;而且其中我看见了平时没见过的函数&#xff0c;sprintf()。 于是就百度sprintf()的使用。 如下&#xff1a; 函数功能&#xff1a;把格式化的数据写入某个字符串 函…

动态内存分配及变量存储类别(第二部分)

5. C语言变量的存储类别和生存期 我们知道&#xff0c;变量是有数据类型的&#xff0c;用以说明它占用多大的内存空间&#xff0c;可以进行什么样的操作。除了数据类型&#xff0c;变量还有一个属性&#xff0c;称为“存储类别”。存储类别就是数据在内存中的存放区域。一个正在…

oracle的em能干什么,转载 解决Oracle的EM登录

转载 解决Oracle的EM登录(2011-03-13 20:53:39)标签&#xff1a;杂谈这几天解决了EM无法登录的问题&#xff0c;顺便也把j数据库程序中常出现的ORA_12518错误解决了&#xff0c;有必要总结一下&#xff0c;我最初遇到的情况是这样的&#xff1a;1. 编写java程序访问oracle数据库…