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项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Nacos日志与Raft的数据清理指南

《Nacos日志与Raft的数据清理指南》随着运行时间的增长,Nacos的日志文件(logs/)和Raft持久化数据(data/protocol/raft/)可能会占用大量磁盘空间,影响系统稳定性,本... 目录引言1. Nacos 日志文件(logs/ 目录)清理1.1 日志文件的作用1.2 是否可以删除

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

MySQL精准控制Binlog日志数量的三种方案

《MySQL精准控制Binlog日志数量的三种方案》作为数据库管理员,你是否经常为服务器磁盘爆满而抓狂?Binlog就像数据库的“黑匣子”,默默记录着每一次数据变动,但若放任不管,几天内这些日志文件就... 目录 一招修改配置文件:永久生效的控制术1.定位my.cnf文件2.添加核心参数不重启热更新:高手应

python通过curl实现访问deepseek的API

《python通过curl实现访问deepseek的API》这篇文章主要为大家详细介绍了python如何通过curl实现访问deepseek的API,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... API申请和充值下面是deepeek的API网站https://platform.deepsee