php抓取网页表格信息(学校的*敏*感*词*消费查询系统不支持数据导入的“随手记”)

优采云 发布时间: 2022-04-18 06:16

  php抓取网页表格信息(学校的*敏*感*词*消费查询系统不支持数据导入的“随手记”)

  上大学后,我开始使用会计软件记录我的各种收入和支出。我开始用的app是“掌上记账”,但是经常遇到在食堂吃完饭忘记花了多少钱却没有的情况。在及时计费的情况下,学校一卡消费查询系统不进行实时统计。好像还有一两天的延迟。另外,到了期末考试的时候,我也没有心去处理这么多的开销。越来越多,所以打算集中时间用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。

  代码如下:(GitHub地址:scnu_ecard_spider)

<p>

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线