网页爬虫 - 如何使用使用java抓取信息并制作一个排名系统?
问题描述
在学习java web 正好有一个有趣的项目可以做 。 我们学校需要晨跑刷卡,体育部提供一个查询网站,但是不提供接口。 想做一个网站/微信后台从学校网上抓取信息储存到数据库 然后用户可以通过我的 网站/微信来查询自己的跑操记录。并且根据这些记录显示排名 等其他的功能。
查询只需要提供学号和姓名,这个数据已经有了。
模拟登录 用httpclient 实现。 获取了整个页面 页面是一个表格显示记录。 该用什么从页面里提取数据呢?
关于java web的方向,我只会用jsp 写一个增删改查。 对于之后的内容不是太懂 。
我要做这样一个后台管理抓取操作 用户查询 返回。 该从什么地方开始学? 或者说使用是什么样的技术/框架呢?
关于查询的网站: 有一个元素是跑操次数。 之后的是对应的记录 每条记录显示跑操时间 具体到分钟。
抓取不是最困难的部分,问题是怎么做一个这样一个管理系统 对于如何开发一个完整的web全栈 没有思路。 我发现我不能评论。。。
谢谢!
问题解答
回答1:我就随便说个,因为我也没想到用什么方法。
用Jsoup去爬页面数据,哈哈
回答2:想到了几点,简单说下:1.数据抓取,可以自己写抓取程序,制定数据爬取的时间规则之类的2.数据处理,抓取到网页的内容通过jsoup或者其他方式对网页有效内容提取,并设计数据结构,学号应该是唯一的,可以有学员表和晨跑记录表,通过学号进行关联3.我的个人理解是按照次数排序,因为想了下,如果按照时间排序是不合理的,因为是没有办法判断真正的晨跑时间的,那我这里就按次数来说吧,可以直接在学员表存放跑步次数的字段,减少通过记录表查询,提高效率,就是需要数据处理时维护此字段
回答3:一般来说呢,是基于httpclient这样的工具将返回包拿到,解析报文实体(这里指html页面),接下来就是利用xpath、正则、类似于jQuery方式解析DOM元素获取你想要的数据(如jsoup包),如果还嫌麻烦可以使用webmagic框架
回答4:模拟登陆:用浏览器打开登陆页观察接收学号密码的url;模拟登陆时post数据到该url;从response的header中解析Set-cookie字段信息;
数据抓取:向体育数据页发起get请求(带上上一步中拿到的cookie字段),拿到response,然后进行正则解析获得数据即可;
建议:缓存用户每次查询的数据,比如缓存2个小时,建议使用redis;数据库可以存查询到的数据,先从redis中取数据,取不到再模拟登陆拿新数据。至于数据库这一层,个人感觉可有可无,有的话也可以进行数据分析什么的
相关文章:
1. 怎样用python给mp3添加封面?2. linux - 【已解决】fabric部署的Python项目Apache启动之后提示403Forbidden该如何解决?3. 上传多图时,最后一张图为缩略图,想设置第一张图为缩略图怎么解决?4. python - 如何获取rabbitmq连接的celery的个数5. js怎样实现在类似qq的联系人分组中进行搜索后,又可恢复原分组的界面?6. python 中文乱码问题7. 数据库 - Mysql的存储过程真的是个坑!求助下面的存储过程哪里错啦,实在是找不到哪里的问题了。8. javascript - 百度地图一开始设置了中心点,怎么通过按钮在调转到对应的中心点????9. mysql优化 - mysql 一张表如果不能确保字段列长度一致,是不是就不需要用到char。10. python - 如何将文本文件的CR换行符换成LF换行符?