如何用java实现网络爬虫抓取页面内容

如何用java实现网络爬虫抓取页面内容,第1张

爬虫的原理其实就是获取到网页内容,然后对其进行解析。只不过获取的网页、解析内容的方式多种多样而已。

你可以简单的使用>

StringBuffer用之前要初始化,eg:StringBuffer sb = new StringBuffer();

StringBuffer document=new StringBuffer();

String line; // 读入网页信息

while ((line = readerreadLine()) != null){

documentappend(line+"\n");

}

String title = documenttoString();

title = titlesubstring(titleindexOf("<title>") + 7,

titleindexOf("</title>"));

Systemoutprintln(title);

// 取得所有的script tag

Elements eles = docgetElementsByTag(script);

for (Element ele : eles) {

// 检查是否有detailInfoObject字串

String script = eletoString();

if (scriptindexOf(detailInfoObject) -1) {

// 只取得script的内容

script = elechildNode(0)toString();

// 使用ScriptEngine来parse

ScriptEngine engine = new ScriptEngineManager()getEngineByName(javascript);

engineeval(script);

// 取得你要的变数

Object obj = engineget(detailInfoObject);

Systemoutprintln(detailInfoObject = + obj);

// 将obj转成Json物件

JSONObject json = JSONObjectfromObject(obj);

Systemoutprintln(json = + json);

// 取得栏位

Systemoutprintln(destInfo = + jsonget(destInfo));

// 取得栏位(array type)

JSONArray scans = jsongetJSONArray(scans);

for (int i = 0, max = scanssize(); i < max; i++) {

File input = new File("/tmp/inputhtml");

Document doc = Jsoupparse(input, "UTF-8", "IP");

看看这个代码,调用 doctext() 方法即可。

你是想做到JSP页面不加入<%%>这种小脚本吧,那可以采用EL表达式,或者一些框架的输出方式,通常用EL就可以了,因为EL就是用来运算和表达的。后台获取数据以后,这个数据可以是一个简单类型,也可以是一个对象,如果是同一个请求下的,也就是request对象没有变,那么可以用这个存储,否则要用session存储,存储数据的对象是JSP内置的对象,有page,request,session,application等,每个对象都能存储数据,但是作用于不同,page针对当前页面,request针对一个请求,session针对一个会话,application针对整个应用程序。 通常session就可以了。 比如后台获取一个String的name值,那么你可以sessionsetAttribute("name",name); 那么JSP直接可以EL这样写:${sessionScopename} 获取这个值,这里的name是后台封装的键的名,不是后面变量name的名。

你这个是不是A系统想了解B系统的页面信息?

如果是这样存在一个问题比较难解决,就是数据源问题,你A系统并不知道B系统的数据。

如果要获取招聘信息的公司名称,有几个思路

1、A系统做一个iframe,这个iframe里面嵌入你要访问的URL,然后你通过JS,获取这个iframe标签里面的所有内容,这样数据源就解决了

2、你可以做一个浏览器插件,这个插件的功能就是获取当前访问页面的所有字符数据,获取到数据后将数据发送到A系统

3、对网页进行截图,然后通过OCR软件获取中的文字,并将文字保存成文本,A系统读取这个文本信息,数据源问题也可以解决

以上上个只是我临时想到的,可能还可以运用JAVA的全文检索框架试试看,因为没有用过这个框架所以不知道是否能够实现

获取到数据源后,接下来就是业务处理了,业务处理就看具体业务进行处理就行了,技术方面就是一个文字处理的功能,技术好实现,业务比较复杂

新浪的那个天气的值是通过js动态加载的,原始html页面是<div id="SI_Weather_Wrap" class="now-wea-wrap clearfix"></div> 。

而jsoup只是对html进行解析,所以是找不到js动态生成的哪些信息的。

以上就是关于如何用java实现网络爬虫抓取页面内容全部的内容,包括:如何用java实现网络爬虫抓取页面内容、JAVA正则表达式获取网页内容的问题、java网页获取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9764216.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存