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

相关文章

Java 日志中 Marker 的使用示例详解

《Java日志中Marker的使用示例详解》Marker是SLF4J(以及Logback、Log4j2)提供的一个接口,它本质上是一个命名对象,你可以把它想象成一个可以附加到日志语句上的标签或戳... 目录什么是Marker?为什么使用Markejavascriptr?1. 精细化的过滤2. 触发特定操作3

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c