Java开发、网络爬虫、自然语言处理、数据挖掘简介

一、java开发

(1) 应用开发,即Java SE开发,不属于java的优势所在,所以市场占有率很低,前途也不被看好。

(2) web开发,即Java Web开发,主要是基于自有或第三方成熟框架的系统开发,如ssh、springMvc、springside、nutz、,面向各自不同的领域,像OA、金融、教育等有非常成熟案例,这是目前最大的市场所在,故人称“java为web而生”。但目前看它的缺点入门不高,所以待遇相对中等,上升空间很有限且缓慢。

(3)移动开发(Android),是目前的大趋势,但移动端往往只能充当客户端的角色,其技术的难度与复杂度要相对弱很多,因为一时的火热其技术市价被高抬,但长久看来其发展空间有限,但比pc web端开发要增快一些。

二、网络爬虫

  也叫spider,始于也发展于百度、谷歌。但随者近几年大数据的兴起,爬虫应用被提升到前所未有的高度。就大数据而言,其实自有数据或用户产生数据平台很有限,只有像电商、微博类这样的平台才能免强自给自足,像很多数据分析挖掘公司多以网络爬虫的方式得到不同来元的数据集合,最后为其所用,构建属于自己的大数据综合平台。其中,像舆情类、金融股票分析类、广告数据挖掘类等属于此种。 下面技术层面描述之。

(1) 传统爬虫,像nutch、hetriex之类的,以爬取简单页面为好,即没有复杂请求的页面。但随着web2.0的兴起,越来越多的网站采用很多动态交互技术如ajax之类的来提升用户体验、需用户登陆才可访问的页面等,它们就无能为力了,或者说需要二次开发的开发成本太高,很多人放弃用它们。

(2) 定制爬虫,针对一些大数据平台,如微博、电商、点评网之类的,页面交互复杂、用户登陆后方可访问,往往是需要自定义定制开发一些爬虫项目,如专门针对微博的微博爬虫,针对大众点评网的定制爬虫,针对豆辩书评的评论爬虫,都属于典型的定制爬虫,其难度要大于传统爬虫,需要相应的定制分析工具与能力,并且要具备很扎实的程序设计功底,优化效率,克服验证码、拒绝服务等反爬措施,方可做出高效的该类爬虫。现在主流依然是基于httpclient+jsoup来搞定网络下载与页面解析。

(3) 新型爬虫,结合一些成熟的第三方工具,如c/c++实现的webkit、htmlunit、phantomjs、casper等工具,其共同点即最大限度的去模拟人为操作浏览器的方式去解决用(1)、(2)所不易解决的问题,如模拟登陆、复杂参数的获取、复杂页面交互等问题。往往采用如上的工具可以轻松搞定这些问题,其最大的缺点是由于基于真实浏览器的操作,故效率比较低,所以往往需要和httpclient相结合,才能达到高效实用的目的。基于phantomjs做的百度元搜索抓取也证明了这一点,下一步可以结合它去完成微博类爬虫的模拟登陆获取cookies部分,之后采用httpclient+jsoup解决海量数据的抓取,是非常好的微博爬虫解决方案。

因为其需要的知识面相对要较多,故其待遇要高于web开发,且上升幅度与速度都远高于web开发。

三、自然语言处理

  即NLP,nature language process的简称,它也是很多其它名称的简称,很多人在此有误解。其主要包括典型的三部分,分词、词性标注、句法分析。

(1)分词:主流的包括开源的ansj分词、ICTCLAS、哈工大的ltp、海量分词、fudan分词等,在借鉴ansj分词的基础上我也重构并开发了天亮分词,并已加入ansj主持的中国自然语言处理开源组织nlpchina的https://github.com/NLPchina/中。

(2)词性标注:以前较主流的标注体系是ICTCLAS和北大标注体系,现在有出现了如哈工大ltp平台、大连理工自然语方处理实验室的标注体系,大同小异。

(3)句法分析:这块相对前两者较难一些,目前国内我知道的是哈工大的ltp做的中文句法分析不错,像stanford的parser对英文句法还可以接受,但对中文句法分析就比较多。

因为这一领域相对比较专,难度和工作量也较大,但由于开源分词比较多且实用性不错,所以专门搞这块的人员往往都在大公司或比较牛的个人,当然待遇比上述一二也要高。

四、数据挖掘

  即datamining,这是现在的大趋势,它往往是基于nlp为基础的,再结合一些典型的数据挖掘算法,像分类、聚类、神经网络相关等算法,从而达到数据挖掘应用开发与产品的目

(1)自行研发相关挖掘算法:也就是在一定数学和计算机基础之上,做一些自主研发相关算法与调优,难度比较大,往往是一些牛人或算法研发工程师去搞。

(2) 引用第三方开源组件,像weka、mahout、libSvm等都提供了很多封装好的各种不同数据挖掘算法的组件,供上层开发人员直接调用,只要学习好其API,并按说明input、output就可以。

五、四者之间的关系

javaweb开发方面可以说是一个门户,可以让用户更好、更直接的了解后台的东西。

网络爬虫,是大数据获取的途径,为nlp、datamining做准备。

nlp,是衔接网络spider的数据和datamining的中间件。

datamining,是终极目标,也是得以变现的核心所在。

这四者是一个顺序承接的关系,若能四者皆具,则谓之大才。

写的比较随意,不当之处欢迎交流。

时间: 2024-10-11 17:10:25

Java开发、网络爬虫、自然语言处理、数据挖掘简介的相关文章

Java开发搜索引擎爬虫

1 package com.peidon.html; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.InputStreamReader; 9 import java.net.HttpURLConnectio

开发网络爬虫应该怎样选择爬虫框架?

有些人问,开发网络爬虫应该选择Nutch.Crawler4j.WebMagic.scrapy.WebCollector还是其他的?这里按照我的经验随便扯淡一下: 上面说的爬虫,基本可以分3类: 1.分布式爬虫:Nutch 2.JAVA单机爬虫:Crawler4j.WebMagic.WebCollector 3. 非JAVA单机爬虫:scrapy 第一类:分布式爬虫         爬虫使用分布式,主要是解决两个问题: 1)海量URL管理 2)网速 现在比较流行的分布式爬虫,是Apache的Nut

开发网络爬虫应该如何选择爬虫框架?

有些人问,开发网络爬虫应该选择Nutch.Crawler4j.WebMagic.scrapy.WebCollector还是其它的?这里依照我的经验随便扯淡一下: 上面说的爬虫,基本能够分3类: 1.分布式爬虫:Nutch 2.JAVA单机爬虫:Crawler4j.WebMagic.WebCollector 3. 非JAVA单机爬虫:scrapy 第一类:分布式爬虫         爬虫使用分布式.主要是解决两个问题: 1)海量URL管理 2)网速 如今比較流行的分布式爬虫,是Apache的Nut

Java之网络爬虫WebCollector2.1.2+selenium2.44+phantomjs2.1.1

Java之网络爬虫WebCollector2.1.2+selenium2.44+phantomjs2.1.1 一.简介 版本匹配: WebCollector2.12 + selenium2.44.0 + phantomjs 2.1.1 动态网页爬取: WebCollector + selenium + phantomjs 说明:这里的动态网页指几种可能:1)需要用户交互,如常见的登录操作:2)网页通过JS / AJAX动态生成,如一个html里有<div id="test">

Python 3开发网络爬虫(四): 登录

原文出处: Jecvay Notes (@Jecvay) <零基础自学用Python 3开发网络爬虫(一)> <零基础自学用Python 3开发网络爬虫(二)> <零基础自学用Python 3开发网络爬虫(三)> 今天的工作很有意思, 我们用 Python 来登录网站, 用Cookies记录登录信息, 然后就可以抓取登录之后才能看到的信息. 今天我们拿知乎网来做示范. 为什么是知乎? 这个很难解释, 但是肯定的是知乎这么大这么成功的网站完全不用我来帮他打广告. 知乎网的

Python 开发网络爬虫(四): 登录

http://blog.jobbole.com/77878/ 博客 – 伯乐在线 首页最新文章在线课程业界开发 IT技术 设计 创业IT职场投稿更多 ? 伯乐在线 > 首页 > 所有文章 > Python > 零基础自学用Python 3开发网络爬虫(四): 登录 零基础自学用Python 3开发网络爬虫(四): 登录 原文出处: Jecvay Notes (@Jecvay)   欢迎分享原创到伯乐头条 今天的工作很有意思, 我们用 Python 来登录网站, 用Cookies记录

适用于Java开发人员的SOLID设计原则简介

看看这篇针对Java开发人员的SOLID设计原则简介.抽丝剥茧,细说架构那些事——[优锐课] 当你刚接触软件工程时,这些原理和设计模式不容易理解或习惯.我们都遇到了问题,很难理解SOLID + DP的思想,甚至很难正确实施它们.确实,“为什么要SOLID?”的整个概念,以及如何实施设计模式,这需要时间和大量实践. 我可以说实话,关于SOLID设计模式以及TDD等其他领域,从本质上讲,它们很难教.很难以正确的方式将所有这些知识和信息传授给年轻人. 让SOLID 变得容易 在本文中,我将以尽可能简单

零基础自学Python 3开发网络爬虫(二): 用到的数据结构简介以及爬虫Ver1.0 alpha

上一回, 我学会了 用伪代码写出爬虫的主要框架; 用Python的urllib.request库抓取指定url的页面; 用Python的urllib.parse库对普通字符串转符合url的字符串. 这一回, 开始用Python将伪代码中的所有部分实现. 由于文章的标题就是"零基础", 因此会先把用到的两种数据结构队列和集合介绍一下. 而对于"正则表达式"部分, 限于篇幅不能介绍, 但给出我比较喜欢的几个参考资料. Python的队列 在爬虫程序中, 用到了广度优先搜

尝试java开发搜索引擎爬虫

大家应该也知道百度搜索结果都会有一个百度快照,这是通过缓存服务器调用出来的页面信息,这样我们就可以通过百度快照快速的浏览网页信息,那么这个缓存服务器跟爬虫又有什么联系么? 我们来大致了解一下爬虫的基本原理(个人理解,有错误给予纠正).首先搜索引擎是不会产生内容的,它的信息是通过爬虫把信息检索出来.爬虫通过域名URL获取到源代码,将页面内容存储到缓存服务器上同时建立索引.将下载下来的网页URL放进URL队列中,并记录避免重复抓取.然后在这个队列中检查URL,要是发现还没有被抓取就将这个URL放进待

JAVA多线程网络爬虫的代码实现

因为项目需要,做了一个网络爬虫的小DEMO. 为实现高性能的网络爬虫,首先考虑采用APACE的HttpClient进行页面的采集和解析,HttpClient可以很方便的通过URL获得远程内容,例如一个小程序:     CloseableHttpClienthttp client = HttpClients.createDefault();     HttpGet httpget = newHttpGet("http://localhost/");     CloseableHttpRe