php抓取网页表格信息(*敏*感*词*消费记录批量导进Excel上的应用)
优采云 发布时间: 2022-04-17 20:43php抓取网页表格信息(*敏*感*词*消费记录批量导进Excel上的应用)
一、背景
我准备将一卡消费记录批量导入随知,但是学校的一卡消费查询系统不支持数据导出。你想让我把数据逐页复制到Excel吗?这种重复无聊的事情不应该由擅长做的电脑来做吗?于是我开始打算写一个脚本,一键抓取我的一卡消费记录。
二、分析
首先打开消费记录查询的网页,拿出开发者工具,观察这个网页,找到我们的目标,就是一个table标签。
然后看看这个标签是怎么生成的,是服务器后端直接生成的网页,还是前端ajax访问后端获取数据渲染出来的?点击Network选项卡刷新网页,发现网页上没有异步请求,每一页都是一个新的网页,所以是前一种情况。而每个页面的url都是【页码】,所以我只需要让程序访问这个url并解析html,获取table里面的数据,然后通过某种方式采集就可以完成目标。
要将结果导入 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。
代码显示如下:
运行结果:
实践证明,在cli模式下运行的PHP还是很强大的^_^
参考:
1、使用PHP爬取个人卡消费记录