Jsoup网页内容抓取分析

上传人:ji****72 文档编号:37544044 上传时间:2018-04-18 格式:DOC 页数:6 大小:170.50KB
返回 下载 相关 举报
Jsoup网页内容抓取分析_第1页
第1页 / 共6页
Jsoup网页内容抓取分析_第2页
第2页 / 共6页
Jsoup网页内容抓取分析_第3页
第3页 / 共6页
Jsoup网页内容抓取分析_第4页
第4页 / 共6页
Jsoup网页内容抓取分析_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《Jsoup网页内容抓取分析》由会员分享,可在线阅读,更多相关《Jsoup网页内容抓取分析(6页珍藏版)》请在金锄头文库上搜索。

1、在 Java 程序在解析 HTML 文档时,大家应该晓得 htmlparser 这个开源项目,我也是使用过,不过这个程序到了 2006 年就没有更新了。由于我的基础较差,对于扩展自定义的标签还是不太懂,还是有超时问题困扰,偶然的机会中发现有 jsoup,而且更新到了 1.72版,使用起来还是很容易上手的。下面写些使用心得:jsoup is a Java library for working with real-world HTML. It provides a very convenient API for extracting and manipulating data, using th

2、e best of DOM, CSS, and jquery-like methods.jsuop 是一款 java 的 html 解析器,提供一套非常省力的 API,通过 dom 模型 css 和类似于 jquery 的方式来获取和操作数据。功能:1.解析一个 Html 文档,2.解析一个 body 片段Java 代码代码 1.String html = “First parse“ 2. + “Parsed HTML into a doc.“; 3.Document doc = Jsoup.parse(html);/分析文档,使用 doc.toString()可以转为文本 4.Element

3、 body=doc.body();/获取 body 片段,使用 body.toString()可以转为文本 获取方式:1.从本地文件加载 2.根据 url 地址获取Java 代码代码 1./*使用静态 Jsoup.parse(File in, String charsetName, String baseUri) 方法 2. *其中 baseUri 参数用于解决文件中 URLs 是相对路径的问题。 3. *如果不需要可以传入一个空的字符串。 4. */ 5.File input = new File(“/tmp/input.html“); 6.Document doc = Jsoup.pars

4、e(input, “UTF-8“, “http:/ Java 代码代码 1./* 2. *根据 url 直接获取内容,可以加入超时,get 方法不行,就用 post 方法 3. *我在实际应用中,出现 404,405,504 等错误信息 4. *将 get 改为 post 就可以,或者反过来改 5. *如果等以后弄明白了,再来解释清楚 6. */ 7.Document doc1 = Jsoup.connect(“http:/ 8.String title = doc1.title(); /获取网页的标题 9.String content=doc1.toString();/将网页转为文本 10.

5、 11. Document doc2 = Jsoup.connect(“http:/“) 12. .data(“query“, “Java“)/请求参数 13. .userAgent(“Mozilla“)/设置 urer-agent 14. .cookie(“auth“, “token“)/设置 cookie 15. .timeout(50000)/设置连接超时 16. .post();/或者改为 get 17. 经过我的测试使用,jsoup 分析网页结构和内容的功能远远强大于 HtmlParser,无论是获取整个页面的文本,还是分析特定内容的网页结构,都是十分的方便。附上链接:jsoup 官

6、网:http:/jsoup.org/ ,中文 jsoup:http:/www.open- 数据获取有两大方法:数据获取有两大方法:1.通过分析通过分析 dom 模型的网页标签和元素,模型的网页标签和元素,2.select 元素选择器,类似元素选择器,类似 jquery 方式(功能很强大,还支持正则表达式)方式(功能很强大,还支持正则表达式)。网页 tag 标签有 body,div,table,tr,td,a,等等。元素的属性有,href,title,width,height,color 等等,元素属性的值就是,例如:href=“”, 值就是 。width=“98%” 值就是 98%下面就以分

7、析 http:/ 首页的每日资讯为例,抓取每日资讯的标题和 url 地址,详细写出分析步骤:1.用用 chrome 浏览器的元素审查,分析页面的结构,得到每日资讯是浏览器的元素审查,分析页面的结构,得到每日资讯是 div class=层里面层里面2.写程序分析,首先根据写程序分析,首先根据 url 获取获取 div 文本,再来根据文本对内容进行分文本,再来根据文本对内容进行分析析Java 代码代码 1./* 2. * 根据 jsoup 方法获取 htmlContent 3. * 加入简单的时间记录 4. * throws IOException 5. */ 6.public static St

8、ring getContentByJsoup(String url) 7. String content=“; 8. try 9. System.out.println(“time=start“); 10. Date startdate=new Date(); 11. Document doc=Jsoup.connect(url) 12. .data(“jquery“, “java“) 13. .userAgent(“Mozilla“) 14. .cookie(“auth“, “token“) 15. .timeout(50000) 16. .get(); 17. Date enddate=n

9、ew Date(); 18. Long time=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 (IOException e) 24. e.printStackTrace(); 25

10、. 26. System.out.println(content); 27. return content; 28. 3. 根据整个每日资讯所在的根据整个每日资讯所在的 div 层,获取那段内容(精确获取)层,获取那段内容(精确获取)Java 代码代码 29. /* 30. * 使用 jsoup 来对文档分析 31. * 获取目标内容所在的目标层 32. * 这个目标层可以是 div,table,tr 等等 33. */ 34. public static String getDivContentByJsoup(String content) 35. String divContent=“;

11、36. Document doc=Jsoup.parse(content); 37. Elements divs=doc.getElementsByClass(“main_left“); 38. divContent=divs.toString(); 39. /System.out.println(“div=“+divContent); 40. return divContent; 41. 4.根据获取的目标层得到你所要的内容(根据获取的目标层得到你所要的内容(title,url 地址地址.等等)等等)Java 代码代码 42. /* 43. * 使用 jsoup 分析 divContent

12、44. * 1.获取链接 2.获取 url 地址(绝对路径) 45. */ 46. public static void getLinksByJsoup(String divContent) 47. String abs=“http:/ 48. Document doc=Jsoup.parse(divContent,abs); 49. Elements linkStrs=doc.getElementsByTag(“li“); 50. System.out.println(“链接=“+linkStrs.size(); 51. for(Element linkStr:linkStrs) 52. S

13、tring url=linkStr.getElementsByTag(“a“).attr(“abs:href“); 53. String title=linkStr.getElementsByTag(“a“).text(); 54. System.out.println(“标题:“+title+“ url:“+url); 55. 56. 5.加入加入 main 方法里面执行测试方法里面执行测试Java 代码代码 57. /* 58. * method 测试获取内容程序 59. */ 60. public static void main(String args) throws IOException 61. 62. /* 63. * 执行分析程序 64. */ 65. String url=“http:/ 66. String HtmlContent=getContentByJsoup(url); 67. String divContent=getDivContentByJsoup(HtmlContent); 68. getLinksByJsoup(divContent); 69. 6.附上结束语:附上结束语:jsoup 功能很好很强大,附上的只是简单的使用方法,还功能很好很强大

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号