记一次网页数据抓取经历——杭电ACM离线题库制作
来源:互联网 发布:怎么修改手机的mac地址 编辑:程序博客网 时间:2024/05/21 08:41
先放效果图:
制作过程:
遍历所有页面
不多说,从1000到4955题(杭电题目不断增加中)
页面url规则:http://acm.hdu.edu.cn/showproblem.php?pid=<题号>
剔除页面中重复内容
使用JQuery方式选中页面中重复内容,并将其删除掉,从而使题库体积更小、页面更简练。
这里可以使用FireBug的jQuerify插件在控制台来做试验,执行效果一目了然,弄错了刷新一遍即可恢复。
$('body>table>tbody>tr:not(body>table>tbody>tr:eq(3))').remove();
在Java中使用Jsoup包即可完成同样任务。
修改标题
杭电题目页的title的格式是:Problem - <题号>,很不直观,我希望的格式是:<题号> - <题目名>。
$('title').text(1000 + $('h1').text());
保存
实际上保存并没有什么可说的,只是我使用的库(Jsoup)默认输出的html是经过格式美化的,然而这将会影响页面内容的格式。所以需要设置Jsoup不要进行美化。
其他
为了使制作出来的题库美观,我们还需要css以及背景图片,自行下载即可。
制作CHM文件
使用Easy CHM制作CHM文件,确实很Easy。
源代码:
OutputSettings outputSettings = new OutputSettings();outputSettings.prettyPrint(false);for(int id=1000;id<=4955;id++){// 获取页面Document doc = Jsoup.connect("http://acm.hdu.edu.cn/showproblem.php?pid=" + id).get();// 剔除重复内容doc.select("body>table>tbody>tr:not(body>table>tbody>tr:eq(3)").remove();// 设置标题doc.title(id + " - " + doc.select("h1").text());// 关闭美化doc.outputSettings(outputSettings);// 写入文件FileWriter fw = new FileWriter(doc.title() + ".html");fw.write(doc.html());fw.close();}
下载:
杭电ACM离线题库
0 0
- 记一次网页数据抓取经历——杭电ACM离线题库制作
- 一次遍历网页抓取数据经历
- 杭电acm题库分类
- 记一次阿里电面经历
- 记一次阿里电面经历
- 网页数据抓取——使用jsoup
- 中学数学题库 网页制作软件
- 杭电ACM—HDU1200
- 记一次WEB数据采集程序开发经历——对付简单的动态加载
- 杭电题库分类
- 记我的第一次批量抓取网页图片的经历
- 【iOS】正则表达式抓取网页数据制作小词典
- 正则表达式抓取网页数据 制作iOS小词典
- ACM北大题库——食物链
- 大学生课表制作(2)——抓取课程表数据
- Jsoup简介——使用Java抓取网页数据
- Jsoup简介——使用Java抓取网页数据
- Jsoup简介——使用Java抓取网页数据
- android wifi锁
- FLV视频封装格式详解
- 环境篇-03:Android开发环境
- Cordova 环境搭建(PhoneGap前身)
- Linux Oracle服务启动&停止脚本与开机自启动
- 记一次网页数据抓取经历——杭电ACM离线题库制作
- 指针赋值
- 简述动态存储分配及malloc(),free()函数(针对linux)
- [ jQuery ] jquery 闭包浅析!
- c# POST和GET方式通过服务器地址提交数据
- 剑指offer24--二叉树的后序遍历
- Oracle BI Mobile App Designer第一次支持是在 BIEE 11.1.1.7.131017
- 织梦仿站系列教程第十七讲——通用底部的制作
- 高斯模糊-Gaussian blur