PHP用CURL爬学校妙思文献图书馆(个人学习日志)

2024-05-25 02:32

本文主要是介绍PHP用CURL爬学校妙思文献图书馆(个人学习日志),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    记录一下,刚学习PHP看到有人用CURL爬数据,就想着怎么做个爬学校图书馆的,学校的网页没有适配移动端很麻烦,每次都只能用电脑查借阅号然后去图书馆找,很不爽,有时候抄错了,还要麻烦图书馆小姐姐诶!

tips:本文curl函数借鉴了csdn以及其他论坛的资料,感谢.

下图是部分截图:

图书馆表单参数很多,我用了俩自定义的其他都是默认,同理。

下面贴代码:

开始找到表单最终提交的地址:tmjs.asp(我用的内网地址)

<!DOCTYPE html>
<html>
<head><title>图书</title><meta charset="utf-8"><meta name="viewport"xxxxxxxxxx,user-scalable=no"><link href="./css/bootstrap.css" rel="stylesheet"><script src="./js/bootstrap.min.js"></script><script src="./js/jquery-3.1.0.min.js"></script><style type="text/css">td:nth-child(1){display: none;}/**去除多余td,正则不会处理的不好**/td:nth-child(3){display: none;}td:nth-child(5){display: none;}</style>
</head>
<body><?php  header("Content-type:text/html;charset=utf-8");  $_cx=urlencode($_POST['_cx_f']);//获取传入书籍名称$_page=$_POST['_page'];//获取设置最大条数$data="page=1&txtWxlx=CN&txtTm=".$_cx."&xxxxxxx";//模拟post构造数据_cx是书名用了url编码$curl="http://172.16.1.43/wxjs/tmjs.asp";//初始化curl模拟提交的地址(内网我用刀的)$ch= curl_init ();  //初始化curl curl_setopt($ch, CURLOPT_URL, $curl);//要从哪个页面获取信息curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//传递数据curl_setopt($ch,CURLOPT_POST,1);//提交方式post
     curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NTxxxxxxxxx;//模拟浏览器curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设定返回 的数据是否自动显示curl_setopt($ch, CURLOPT_HEADER, 0);//设定是否显示头信息$content = curl_exec($ch);//运行并获取数据curl_close($ch);//关闭请求$str1=preg_replace("/<a[^>]+?href=[\"']?([^\"']+)[\"']?[^>]*>/","",$content );//perl正则表达式去除a标签$pattern="/<td class=\"tdborder4\".*?>.*?<\/td>/ism";//perl模式preg_match_all($pattern, $str1, $n);//按照模式获取数据并传回数组$n//print_r($n);$arr_tmp=$n[0];//三维数组转二维$_books=array_chunk($arr_tmp,6);//二维数组分割,重新分配下标//print_r($_books);//打印数组数据  ?>  <table class="table table-striped table-bordered table-hover"><!--bt框架表格--><thead><tr><th>图书编号</th><th>书籍名称</th><th>出版日期</th></tr></thead><tbody><?php foreach ($_books as $key=>$value) //循环输出{echo "<tr>";echo "<td class=\"_title\">"."$value[0]"."</td>";//书名echo "<td class=\"_title\">"."$value[1]"."</td>";//借阅号echo "<td class=\"_title\">"."$value[4]"."</td>";//出版时间echo "</tr>";}?></tbody></table>
</body>
</html>



 

结束,由于学校图书馆外网突然不能访问,嗯,凉了,没法放到ecs了,穿透又不会(要是有文达校友一起玩!)



这篇关于PHP用CURL爬学校妙思文献图书馆(个人学习日志)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1000232

相关文章

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

SQL Server清除日志文件ERRORLOG和删除tempdb.mdf

《SQLServer清除日志文件ERRORLOG和删除tempdb.mdf》数据库再使用一段时间后,日志文件会增大,特别是在磁盘容量不足的情况下,更是需要缩减,以下为缩减方法:如果可以停止SQLSe... 目录缩减 ERRORLOG 文件(停止服务后)停止 SQL Server 服务:找到错误日志文件:删除

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

grom设置全局日志实现执行并打印sql语句

《grom设置全局日志实现执行并打印sql语句》本文主要介绍了grom设置全局日志实现执行并打印sql语句,包括设置日志级别、实现自定义Logger接口以及如何使用GORM的默认logger,通过这些... 目录gorm中的自定义日志gorm中日志的其他操作日志级别Debug自定义 Loggergorm中的

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操