Java课程设计——博客作业教学数据分析系统(201521123082 黄华林)


一、团队课程设计博客链接

博客作业教学数据分析系统(From:网络五条狗)


二、个人负责模块或任务说明

1.网络爬虫

首先,一个博客作业教学数据分析系统的基础就是相关的数据。

其次,系统是通过网络爬虫技术抓取博客网页源码上的数据。

最后,将抓取的数据存入设计好的数据库以供提取分析。


三、自己的代码提交记录截图


四、自己负责模块或任务详细说明

1.负责模块

(1)抓取每位同学每次博客作业网页的浏览量、阅读量、篇幅、图片数量;

(2)把每位同学的学号和分数、每次博客作业地址、图片数量、篇幅、浏览量、阅读数量存入数据库。

2.任务详细说明

(1)图片数量抓取

利用Jsoup获取网页源码,然后利用getElementsByTag()筛选img标签,统计图片数量。

(2)文章篇幅抓取

直接利用size()方法统计网页源码篇幅。

(3)浏览量和阅读量数据抓取

<1>一开始就直接想从作业博客原始链接的元素源码:



想直接用Jsoup方法抓取,如下部分测试代码段:

        // 获取目标HTML代码
Elements elements1 = doc.select("[class=postDesc]");
// 获取浏览数量
Elements elements2 = elements1.select("#post_view_count");
String browse = elements2.get(0).text();
System.out.println(browse);
// 获得评论数量
Elements elements3 = elements1.select("#post_comment_count");
String comment = elements3.get(0).text();
System.out.println(comment);

然后两个的抓取的结果都是“...”。

<2>查看网页源码后如下:

<3>然后利用FireBug调试,获得浏览量的url

然后寻找到浏览量页面的url的规律:"http://www.cnblogs.com/mvc/blog/ViewCountCommentCout.aspx?postId="+"每个学生的博客链接的postId"

以我的作业为例子查看网页源码:



然后利用select("body").text()获取浏览量。

<4>同样获得阅读量的url

拼装办法:"http://www.cnblogs.com/mvc/blog/GetComments.aspx?postId="+postId+"&blogApp="+name+"&pageIndex=0&anchorCommentId=0";

查看网页如下:



网页源码如下:



首先利用HttpClient获取网页html,然后利用json的方法获得commentCount的值。

(4)以上功能的关键代码

抓取图片数量、文章幅度、浏览量、阅读量:



获得评论量的实现:

(5)建立一个WebCrawler类,连接数据库,利用多线程读取garde表的url、学号、分数,并且利用每个学生的博客作业地址,抓取四个数据后存入数据库以供数据分析。

采用多线程实现网页数据抓取的关键代码:



运行情况:





数据库:


五、课程设计感想

这次java课程设计,我们组一共五个人。我们组提前一周,就每天晚上7点集合敲代码。组长给每位同学都安排好工作,然后每个人都努力地完成工作。在集合敲代码的时候,我对于数据库和多线程的知识并不牢固,经常遇到瓶颈,这时候我会请教daiker,他对爬虫的使用很了解。我们采用导入库的方法,利用jsoup、HttpEntity,抓取网页上需要的数据。在使用这些库的时候,很多方法都是实时百度,以网上代码为例,自己通过学习,学以致用,提升了自己解决问题的能力。最后,我们的课程设计完成了,感谢组长和daiker的带领。我们通过课程设计,相互了解,相互促进,是一次很好的体验。


最新文章

  1. HTTP 304 的理解
  2. linux设备驱动归纳总结(四):3.抢占和上下文切换【转】
  3. oracle个人总结
  4. jsPlumb 学习笔记
  5. Eclipse环境下JBoss调试,解决引用的工程不被部署的问题
  6. sql 更新重复数据只取一条记录
  7. json xmpp
  8. mysql命令行执行外部文件
  9. 我喜欢的两个js类实现方式
  10. cordova 插件开发
  11. 【知识整理】这可能是最好的RxJava 2.x 入门教程(三)
  12. 当谈到 GitLab CI 的时候,我们该聊些什么(上篇)
  13. HDU1016 DFS+回溯(保存路径)
  14. 阿里云 virtual memory exhausted: 无法分配内存
  15. ORA-00900: invalid SQL statement
  16. SpringBoot 创建可执行Jar
  17. c# aes,des,md5加密等解密算法
  18. python数据类型之集合类型
  19. 源码编译、安装net-snmp的方法和遇到的问题
  20. nodejs stream 手册学习

热门文章

  1. win10*64+vs2015+opencv3.0工程模板配置
  2. 一个普通的 Zepto 源码分析(三) - event 模块
  3. SVN:Cleanup failed to process the following paths
  4. 谈一谈 Laravel 5.5 的 「自动发现」和此刻心情
  5. 熟悉JS中的常用选择器及属性、方法的调用
  6. node.js之事件机制
  7. 一个基于JRTPLIB的轻量级RTSP客户端——myRTSPClient详解
  8. Basic Skill
  9. 在Debian9(linux)上使用 的 python 3 IDLE(已经安装了python 2.7 的情况下)
  10. Andrew Ng机器学习课程笔记--week9(下)(推荐系统&amp;协同过滤)