Need

  在如今的互联网市场上相关的网络爬虫软件已然很多,要想赢得客户,高效、稳定、创新都必不可少的。

  我们初步阅读和运行了上一届团队的项目,决定从以下几个方面修改和完善创新这一项目:

  1.改善对爬取网页的分类策略

  某些URL抓取的数目会十分庞大,而用户的使用该软件的需求就是要快速地找到最需要的信息,如果直接把这一大串URL或者初略地进行分类返回给用户,反而让用户不知从何下手。我们的软件是针对计算机科学来爬取的,而计算机领域中信息多种多样,这要求我们需要一个更为高效和快速的分类器,尽可能运用最佳的分类策略对爬取的URL群进行分类。从而能把用户最需要的信息反馈出来。

  2.增强软件的稳定性

  互联网市场中不乏极具创新的软件,但有些软件BUG频出的现象令很多被它的新颖吸引来的客户摇头而归。我们这几天对学长的软件进行了试用,常会发现崩溃的现象。这些崩溃往往是因为客户的错误操作而造成的。但是这最本质的原因还是程序本身的鲁棒性不够强大。一个好的软件应该能尽可能包容用户的操作错误并给予提示,而不是直接崩溃而让用户不知所措。所以稳定性的增强将是我们进行这一项目的最要课题之一。

  3.增加爬虫的爬取性能

  根据老师的要求,我们的爬虫需要能爬取一个网页的多级链接,但是因为在实际中很多链接是我们并不需要的。所以我们会完善我们的爬取策略,譬如在爬取时我们可以摒弃这些链接,从而提高我们的爬取效率,使得我们爬虫所提供给用户的信息更能满足需求。

  4.使爬虫更人性化

  在试用上一届团队的时候我们发现用户的选择项还是比较少的。我们希望能够更多的知道用户想要什么,让我们的爬虫给用户更多的选择空间。这样做不仅能更快速的返回用户所选择信息,还能更方便地进行爬取路线的剪枝,提高爬取效率。

  5.进行功能创新

  这一项目已经有几届学长做过了,他们当时也在力求创新,从一开始只能抓网页发展到抓视频等等。我们这一小组也会将这一创新精神延续下去。在课上老师提到的一个点子就令我们非常感兴趣:能不能让爬虫脱离爬和停的指令,实现自动爬。我们将在今后深入代码和思想的过程中尽可能抓住能够创新的可能性。


Approach

  1.我们会完善甚至重构我们的分类器,引入一切更为高效的分类策略。譬如在根据词频分类时不仅仅是根据最高词频的那一个词,而是根据多个高频词并进行一些简单的分析再来进行分类。我们的分类器应该能够判断什么时候应该更大局,更多元的考虑一个URL的信息来确定它属于哪一类,而什么时候应该更注重一个显著的特征进行分类。

  2.我们会将我们上学期面向对象课程中的知识学以致用,更系统,更有针对性的进行异常的捕捉和抛出。同时输入的处理也是我们关注的一个重点,我们要求我们的软件能够尽可能包容用户的各式输入。在输入的处理这一块我们可能会用到正则,并全面的分析错误输出的样式。

  3.我们发现爬虫的爬取过程真是一个图的遍历,这就联系到我们的算法知识。我们会更准确,更多地进行约束条件的分析,是的遍历路线的剪枝能够高效的进行。同时我们在进行项目的过程中会留意遍历策略的选择,有没有一种遍历策略的效率能比深度遍历和广度遍历更优?

  4.在项目的后期我们会特别安排人对软件的界面进行设计,能使之更亲和。同时设计多个用户选择项,将用户的选择告诉我们的软件,能让我们的爬虫选择最优的爬取路线,从而返回用户需要的信息。

  5.在我们还没更深的融入这一项目之前我是不提倡空谈创新的。我们将会在项目的进行过程中细心留意,发现问题,尽可能抓住能够创新的契机。同时我们还会试验是否能够让爬虫实现自动爬的功能。


Benefits

  1.用户能够得到更为准确的信息分类,从而选择自己所需要的信息。

  2.在使用过程中崩溃以及一些卡顿的减少,能够给予用户更好的软件体验。

  3.爬虫效率的提高能够更快的响应用户的请求,及时地返回爬取的结果。

  4.让用户能够感觉到我们友善人性化的界面,给予观众更多丰富的选择,同时更有针对性的返回信息。

  5.创新毋庸置疑是能够丰富用户的体验的,我们需要创新让用户觉得我们的作品很新颖,愿意使用我们的软件。


Competition

  界面的包装,新颖的功能必然是吸引用户的渠道,但是一个软件最能得到用户并留住用户的还是它的核心功能。我们认为网络爬虫最主要的竞争力还是它的效率。网络爬虫是自动获取网页内容的程序,是搜索引擎的重要组成部分,而百度和搜狗等国内龙头搜索引擎能够成功必然离不开他们强大的爬取算法。

  下面我将讨论我们团队所重视的方向及其带来的竞争优势:

  1.核心算法的优越及其带来的时间效率

  在计算机领域有流传着这么一句话:算法走多远,计算机走多远。可见一个优秀的算法对于一个软件何其重要。我们会细心研究学长的算法,尽可能将算法更优化,从而使得我们爬虫的爬取效率能够得到提高。

  2.人性化设计

  我们在项目进行过程中会特别注重软件的人性化设计。尽可能让用户能够根据自身需求来进行选择,让用户拥有更多的主动权。

  3.功能的创新

  我们不必手动进行爬取,让软件能够自动爬取信息,返回最新的网页内容,用户只需要设置好需求就安心等待结果。


发布

  当今的世界是金子也不一定能发光。软件制作好后我们应毛遂自荐,重视推广。在项目开始时我们初步制定了以下几个推广方式,待项目完成时根据具体情况进行选择:

  1.在各大软件网站发布我们的软件,例如天空下载站,华军软件园,绿色软件联盟等等。

  2.建立一个推广群,在发布的网站上留下我们的群信息,表达希望用户加群的意愿,然后实时地收集用户的反馈信息,并通过喜爱软件而加群的用户加大我们推广力度。

  3.在一些社交平台上进行广告推广,比如微信,QQ空间,人人网等等。

  4.如果技术允许,制作一些网页小弹窗,并制作一个属于我们团队的官网。

  通过小组成员的宣传,预计一周的用户能在500左右。

爬虫项目之NABC的更多相关文章

  1. Teamwork——Week4 团队项目之NABC

    项目框架——NABC模型 一.N(Need需求) 我们组主要的用户对象是第三小组——UI小组的同学们,因此我们的用户需求就是他们的数据需求. 1)提供给UI小组整理好的数据库,和前一组讨论好数据结构. ...

  2. 基于webmagic的爬虫项目经验小结

    大概在1个月前,利用webmagic做了一个爬虫项目,下面是该项目的一些个人心得,贴在这里备份: 一.为什么选择webmagic? 说实话,开源的爬虫框架已经很多了,有各种语言(比如:python.j ...

  3. 实用的开源百度云分享爬虫项目yunshare - 安装篇

    今天开源了一个百度云网盘爬虫项目,地址是https://github.com/callmelanmao/yunshare. 百度云分享爬虫项目 github上有好几个这样的开源项目,但是都只提供了爬虫 ...

  4. 推荐几个优秀的java爬虫项目

    java爬虫项目   大型的: Nutch apache/nutch · GitHub 适合做搜索引擎,分布式爬虫是其中一个功能. Heritrix internetarchive/heritrix3 ...

  5. Python即时网络爬虫项目启动说明

    作为酷爱编程的老程序员,实在按耐不下这个冲动,Python真的是太火了,不断撩拨我的心. 我是对Python存有戒备之心的,想当年我基于Drupal做的系统,使用php语言,当语言升级了,推翻了老版本 ...

  6. Python即时网络爬虫项目: 内容提取器的定义(Python2.7版本)

    1. 项目背景 在Python即时网络爬虫项目启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间太多了(见上图),从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到更高端 ...

  7. Python即时网络爬虫项目: 内容提取器的定义

    1. 项目背景 在python 即时网络爬虫项目启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间,从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到更高端的数据处理工作 ...

  8. 在Pycharm中运行Scrapy爬虫项目的基本操作

    目标在Win7上建立一个Scrapy爬虫项目,以及对其进行基本操作.运行环境:电脑上已经安装了python(环境变量path已经设置好), 以及scrapy模块,IDE为Pycharm .操作如下: ...

  9. C语言Linix服务器网络爬虫项目(二)项目设计和通过一个http请求抓取网页的简单实现

    我们通过上一篇了解了爬虫具体要实现的工作之后,我们分析得出的网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL: 2.将这些URL放入待抓取URL队列: 3.从待抓取URL队列中取出 ...

随机推荐

  1. Unicode,GBK,GB2312,UTF-8概念基础(转载)

    第一篇:JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础本部分采用重用,转载一篇文章来完成这部分的目标.来源:holen'blog   对字符编码与Unicode,IS ...

  2. 8、JVM--虚拟机字节码执行引擎

    8.1.概述 执行引擎是Java虚拟机最核心的组成部分之一.“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.硬件.指令集和操作系统层面上 ...

  3. lucene查询语法简介

    为什么要介绍lucene:我们在ELK中搜索相关日志的时候,搜索语言需要遵循Lucene才可以匹配到需要的信息 什么是Lucene:Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件 ...

  4. Python2.7-pickle, cpickle

    pickle, cpickle模块,用于序列化和反序列化 python 对象数据,可以被序列化的有:布尔值,数值,字符串,包含以上三类的容器,定义在模块顶层的函数.内置函数和类,实例对象的 __dic ...

  5. Underscore.js 入门-常用方法介绍

    Underscore.js是一个很精干的库,压缩后只有4KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了JavaScript的编程.MVC框架Backbone.js就将这个库作为自 ...

  6. OC实现个人中心页面

    AppDelegate.m: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDic ...

  7. Jupyter Notebook中让python2和python3内核共存

    自己计算机里面共存了Python2和Python3,ipython作为试探性的REPL解释器使用的频率还是挺高的,分别在2和3下安装完ipython notebook后怎么分别使用这两种内核呢 按照默 ...

  8. ISCSI工作流程target和initiator

    随着企业级的数据呈指数增长,传统的集中式存储方案已无法满足其存储要求,因而存储区域网(storage area network,SAN)技术被广泛应用,但其存在距离短.价格贵和构建复杂等不足.基于iS ...

  9. C# HtmlAgilityPack和AngleSharp 解析HTML

     C# HtmlAgilityPack和AngleSharp 解析HTML by:wgscd date:2018-1-17 HtmlAgilityPack 有点是只有一个单独DLL.AngleShar ...

  10. go语言之行--网络编程、http处理流程详情

    一.简介 go语言中的网络编程主要通过net包实现,net包提供了网络I/O接口,包括HTTP.TCP/IP.UDP.域名解析和Unix域socket等.和大多数语言一样go可以使用几行代码便可以启动 ...