php抓取网页表格信息(*敏*感*词*消费记录批量导进Excel上的应用)
优采云 发布时间: 2021-12-02 01:19php抓取网页表格信息(*敏*感*词*消费记录批量导进Excel上的应用)
一、背景
我准备批量导入*敏*感*词*消费记录到Quick Notes,但是学校的*敏*感*词*消费查询系统不支持数据导出。要我逐页将数据复制到 Excel 吗?这种重复无聊的事情难道不应该由擅长做这些事情的计算机来解决吗?于是我开始计划写一个脚本,一键抓取我的多合一卡消费记录。
二、分析
首先打开查询消费记录的网页,拿出开发者工具,观察这个网页,找到我们的目标,是一个table标签。
然后看这个标签是怎么生成的,是服务器后端直接生成的网页,还是前端ajax访问后端获取数据然后渲染出来?点击网络选项卡刷新网页,发现网页上没有异步请求。每个页面都是一个新的网页,所以前者是这样。而且每个页面的url都是[页码],所以我只需要让程序访问这个url,解析html就可以得到表里面的数据,然后通过某种方式采集起来就完成了目的。
要将结果导入 Excel,此处使用了一种简单方便的表格文件格式 .CSV。本质上,csv表格文件只是一个文本文件,表格的各个字段用逗号等分隔符隔开,表格中的每一行数据都用换行符分隔(在Excel中,换行符为“ rn")
字段1,字段2,字段3,字段4
A,B,C,D
1,2,3,4
它是如此简洁和清晰!对于任何程序,简单的字符串拼接就可以生成一个csv格式的表格。
经过我的测试,我这学期以来的消费记录只有这个网页50多页,所以爬虫需要抓取的数据量很小,处理起来完全没有压力。一次得到所有结果后直接保存。该文件将执行。
至于爬虫程序的语言选择,我无话可说。目前对PHP比较熟悉,所以接下来的程序我也会用PHP来完成。
三、执行
首先,确定我应该如何模拟登录到这个系统。这里要知道HTTP是无状态协议,所以服务器如果要确定当前请求的用户是谁,必须通过HTTP请求的cookie中存储的信息来确定。. 所以如果我们想让服务器知道爬虫发送的HTTP请求的用户是我,我们应该让爬虫发送的HTTP请求携带这个cookie,在这里我们可以从chrome复制cookie并将其值保存在一个变量之间的某些备用。
查看浏览器的header访问这个页面,发现cookie只有JSESSIONID。
接下来,编写一个循环,将每页的结果添加到保存结果的字符串中。当没有找到数据时,会跳出循环,保存结果,程序结束。
在提取数据时,我使用了 simple_html_dom,一个简单方便的库,用于解析 html 中的 DOM 结构。
最后,将字符串的内容保存到 result.csv。
代码显示如下:
操作结果:
实践证明,php在cli模式下运行还是很强大的^_^
参考:
1、 使用PHP爬取个人刷卡消费记录