Jsoup网页内容抓取分析.doc_第1页
Jsoup网页内容抓取分析.doc_第2页
Jsoup网页内容抓取分析.doc_第3页
Jsoup网页内容抓取分析.doc_第4页
Jsoup网页内容抓取分析.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在Java 程序在解析HTML 文档时,大家应该晓得htmlparser 这个开源项目,我也是使用过,不过这个程序到了2006年就没有更新了。由于我的基础较差,对于扩展自定义的标签还是不太懂,还是有超时问题困扰,偶然的机会中发现有jsoup,而且更新到了1.72版,使用起来还是很容易上手的。下面写些使用心得: jsoupis a Java library for working with real-world HTML. It provides a very convenient API for extracting and manipulating data, using the best of DOM, CSS, and jquery-like methods. jsuop是一款java的html解析器,提供一套非常省力的API,通过dom模型css和类似于jquery的方式来获取和操作数据。 功能:1.解析一个Html文档,2.解析一个body片段 Java代码1. Stringhtml=Firstparse 2. +ParsedHTMLintoadoc.; 3. Documentdoc=Jsoup.parse(html);/分析文档,使用doc.toString()可以转为文本 4. Elementbody=doc.body();/获取body片段,使用body.toString()可以转为文本 获取方式:1.从本地文件加载 2.根据url地址获取 Java代码1. /*使用静态Jsoup.parse(Filein,StringcharsetName,StringbaseUri)方法 2. *其中baseUri参数用于解决文件中URLs是相对路径的问题。 3. *如果不需要可以传入一个空的字符串。 4. */ 5. Fileinput=newFile(/tmp/input.html); 6. Documentdoc=Jsoup.parse(input,UTF-8,/);Java代码1. /* 2. *根据url直接获取内容,可以加入超时,get方法不行,就用post方法 3. *我在实际应用中,出现404,405,504等错误信息 4. *将get改为post就可以,或者反过来改 5. *如果等以后弄明白了,再来解释清楚 6. */ 7. Documentdoc1=Jsoup.connect(/).get(); 8. Stringtitle=doc1.title();/获取网页的标题 9. Stringcontent=doc1.toString();/将网页转为文本 10. 11. Documentdoc2=Jsoup.connect() 12. .data(query,Java)/请求参数 13. .userAgent(Mozilla)/设置urer-agent 14. .cookie(auth,token)/设置cookie 15. .timeout(50000)/设置连接超时 16. .post();/或者改为get 17. 经过我的测试使用,jsoup分析网页结构和内容的功能远远强大于HtmlParser,无论是获取整个页面的文本,还是分析特定内容的网页结构,都是十分的方便。 附上链接:jsoup官网:/,中文jsoup:/jsoup/ 下面写些我的使用记录,希望大家如果能从我的方法中得到启发,鉴于本人从事开发工作不久,内容可能写的不是很好。 jsoup数据获取有两大方法:1.通过分析dom模型的网页标签和元素,2.select元素选择器,类似jquery方式(功能很强大,还支持正则表达式)。网页tag标签有body,div,table,tr,td,a,等等。元素的属性有,href,title,width,height,color等等,元素属性的值就是,例如:href=“”, 值就是 。width=“98%” 值就是98% 下面就以分析首页的每日资讯为例,抓取每日资讯的标题和url地址,详细写出分析步骤: 1.用chrome浏览器的元素审查,分析页面的结构,得到每日资讯是div class=层里面 2.写程序分析,首先根据url获取div文本,再来根据文本对内容进行分析Java代码1. /* 2. *根据jsoup方法获取htmlContent 3. *加入简单的时间记录 4. *throwsIOException 5. */ 6. publicstaticStringgetContentByJsoup(Stringurl) 7. Stringcontent=; 8. try 9. System.out.println(time=start); 10. Datestartdate=newDate(); 11. Documentdoc=Jsoup.connect(url) 12. .data(jquery,java) 13. .userAgent(Mozilla) 14. .cookie(auth,token) 15. .timeout(50000) 16. .get(); 17. Dateenddate=newDate(); 18. Longtime=enddate.getTime()-startdate.getTime(); 19. System.out.println(使用Jsoup耗时=+time); 20. System.out.println(time=end); 21. content=doc.toString();/获取iteye网站的源码html内容 22. System.out.println(doc.title();/获取iteye网站的标题 23. catch(IOExceptione) 24. e.printStackTrace(); 25. 26. System.out.println(content); 27. returncontent; 28. 3. 根据整个每日资讯所在的div层,获取那段内容(精确获取)Java代码29. /* 30. *使用jsoup来对文档分析 31. *获取目标内容所在的目标层 32. *这个目标层可以是div,table,tr等等 33. */ 34. publicstaticStringgetDivContentByJsoup(Stringcontent) 35. StringdivContent=; 36. Documentdoc=Jsoup.parse(content); 37. Elementsdivs=doc.getElementsByClass(main_left); 38. divContent=divs.toString(); 39. /System.out.println(div=+divContent); 40. returndivContent; 41. 4.根据获取的目标层得到你所要的内容(title,url地址.等等) Java代码42. /* 43. *使用jsoup分析divContent 44. *1.获取链接2.获取url地址(绝对路径) 45. */ 46. publicstaticvoidgetLinksByJsoup(StringdivContent) 47. Stringabs=/; 48. Documentdoc=Jsoup.parse(divContent,abs); 49. ElementslinkStrs=doc.getElementsByTag(li); 50. System.out.println(链接=+linkStrs.size(); 51. for(ElementlinkStr:linkStrs) 52. Stringurl=linkStr.getElementsByTag(a).attr(abs:href); 53. Stringtitle=linkStr.getElementsByTag(a).text(); 54. System.out.println(标题:+title+url:+url); 55. 56. 5.加入main方法里面执行测试Java代码57. /* 58. *method测试获取内容程序 59. */ 60. publicstaticvoidmain(Stringargs)throwsIOException 61. 62. /* 63. *执行分析程序 64. */ 65. Stringurl=/; 66. StringHtmlContent=getContentByJsoup(url); 67. StringdivContent

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论