`
cjp1989
  • 浏览: 162960 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

jsoup网页内容抓取分析(2)

阅读更多

     针对上一篇写的内容很简单,只是给大家抛出了有一个工具可以用来分析网页的内容,做java搜索爬虫使用,实际的使用并没有怎么介绍,现在这篇文章就来介绍一下用法,可能分析的不是很全面,欢迎批评。经过我的测试使用,jsoup分析网页结构和内容的功能远远强大于HtmlParser,无论是获取整个页面的文本,还是分析特定内容的网页结构,都是十分的方便。

 

        附上链接:jsoup官网http://jsoup.org/ ,中文jsoup:http://www.open-open.com/jsoup/

     下面写些我的使用记录,希望大家如果能从我的方法中得到启发,鉴于本人从事开发工作不久,内容可能写的不是很好。

 

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

     

      下面就以分析http://www.iteye.com首页的每日资讯为例,抓取每日资讯的标题和url地址,详细写出分析步骤:

 

       1.用chrome浏览器的元素审查,分析页面的结构,得到每日资讯是div class=<main_left>层里面

 

     2.写程序分析,首先根据url获取div文本,再来根据文本对内容进行分析

 

	/**
	 * 根据jsoup方法获取htmlContent
         * 加入简单的时间记录
	 * @throws IOException 
	 */
	public static String getContentByJsoup(String url){
		String content="";
		try {
			System.out.println("time=====start");
			Date startdate=new Date();
			Document doc=Jsoup.connect(url)
			.data("jquery", "java")
			.userAgent("Mozilla")
			.cookie("auth", "token")
			.timeout(50000)
			.get();
			Date enddate=new Date();
			Long time=enddate.getTime()-startdate.getTime();
			System.out.println("使用Jsoup耗时=="+time);
			System.out.println("time=====end");
			content=doc.toString();//获取iteye网站的源码html内容
			System.out.println(doc.title());//获取iteye网站的标题
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println(content); 
		return content;
	}

 

     3. 根据整个每日资讯所在的div层,获取那段内容(精确获取)

 

        /**
	 * 使用jsoup来对文档分析
         * 获取目标内容所在的目标层
         * 这个目标层可以是div,table,tr等等
	 */
	public static String getDivContentByJsoup(String content){
		String divContent="";
		Document doc=Jsoup.parse(content);
		Elements divs=doc.getElementsByClass("main_left");
		divContent=divs.toString();
	      //System.out.println("div==="+divContent);
		return divContent;
	}

    

     4.根据获取的目标层得到你所要的内容(title,url地址...等等)

 

      

/**
	 * 使用jsoup分析divContent
	 * 1.获取链接 2.获取url地址(绝对路径)
	 */
	public static void getLinksByJsoup(String divContent){
		String abs="http://www.iteye.com/";
		Document doc=Jsoup.parse(divContent,abs);
		Elements linkStrs=doc.getElementsByTag("li");
		System.out.println("链接==="+linkStrs.size());
		for(Element linkStr:linkStrs){
		    String url=linkStr.getElementsByTag("a").attr("abs:href");
		    String title=linkStr.getElementsByTag("a").text();
		    System.out.println("标题:"+title+" url:"+url);
		}
	}

 

     5.加入main方法里面执行测试

 

/**
	 * @method 测试获取内容程序
	 */
	public static void main(String[] args) throws IOException {
		
		/**
		 * 执行分析程序
		 */
		String url="http://www.iteye.com/";
		String HtmlContent=getContentByJsoup(url);
		String divContent=getDivContentByJsoup(HtmlContent);
		getLinksByJsoup(divContent);
	}

 

     6.附上结束语:jsoup功能很好很强大,附上的只是简单的使用方法,还有很多需要完善的内容,我其实使用也不到几天的时间。还有就是select功能还是很好用的,具体参考官方文档,写的非常的通俗易懂!附上程序源码和jsoup的jar包

 

 

 

  • 大小: 93.5 KB
  • 大小: 249.9 KB
8
2
分享到:
评论
14 楼 cjp1989 2013-02-26  
shantouyyt 写道
请问下,是不是有些网站会被屏蔽掉 我访问的时候出现“您的访问请求被拒绝 - ITeye技术社区”

Document doc = Jsoup.connect("http://www.iteye.com/").post();

还有  data,userAgent,cookie 等是什么意思,为了做什么。。。
  Document doc=Jsoup.connect(url) 
        .data("jquery", "java") 
        .userAgent("Mozilla") 
        .cookie("auth", "token") 
        .timeout(50000) 
        .get(); 

谢谢。。。。。

因为有些网站的后台接收是用get方法的进行数据传输,你就不能使用post了。当然这个个别情况,可以看我的第一篇文章!
13 楼 shantouyyt 2013-02-25  
请问下,是不是有些网站会被屏蔽掉 我访问的时候出现“您的访问请求被拒绝 - ITeye技术社区”

Document doc = Jsoup.connect("http://www.iteye.com/").post();

还有  data,userAgent,cookie 等是什么意思,为了做什么。。。
  Document doc=Jsoup.connect(url) 
        .data("jquery", "java") 
        .userAgent("Mozilla") 
        .cookie("auth", "token") 
        .timeout(50000) 
        .get(); 

谢谢。。。。。
12 楼 cjp1989 2013-02-23  
hadoopforcloud 写道
建议博主试试htmlcleaner+xpath的组合,比这个更方便

谢谢,我要试试!
11 楼 cjp1989 2013-02-23  
eppen 写道
加上
.data("jquery", "java") 
好像没用吧?

确实是没有什么用处
10 楼 hadoopforcloud 2013-02-23  
建议博主试试htmlcleaner+xpath的组合,比这个更方便
9 楼 eppen 2013-02-23  
加上
.data("jquery", "java") 
好像没用吧?
8 楼 cjp1989 2013-02-22  
jianghenet 写道
能不能开发一套工具,再开发一套Chrome插件配合使用。Chrome插件用于选取抓取内容的DOM元素,然后生成参数,用jsoup来抓取。

想法是好的,呵呵!
7 楼 jianghenet 2013-02-22  
能不能开发一套工具,再开发一套Chrome插件配合使用。Chrome插件用于选取抓取内容的DOM元素,然后生成参数,用jsoup来抓取。
6 楼 cjp1989 2013-02-22  
simple1024 写道
最近一直在用jsoup抓一些资源

select很好很强大哦,我就直接用select定位了,省去了很多繁琐。

jsoup上手也容易。

jsoup的功能远远不止这些,还有模拟提交, 下载图片,下载歌曲等等功能!
5 楼 cjp1989 2013-02-22  
simple1024 写道
我在想,能不能写一套通用的程序, 去爬取一些信息呢?

但是每个网站结构不同,我目前都针对网站写相应的程序,有什么好的办法么?

采用select选择器,针对你要的内容,元素的标签分类,存入数据库。直接从数据库读取参数,当然这个只能对于80%的网站。还有就是正则匹配你要的内容
4 楼 simple1024 2013-02-22  
我在想,能不能写一套通用的程序, 去爬取一些信息呢?

但是每个网站结构不同,我目前都针对网站写相应的程序,有什么好的办法么?

3 楼 simple1024 2013-02-22  
最近一直在用jsoup抓一些资源

select很好很强大哦,我就直接用select定位了,省去了很多繁琐。

jsoup上手也容易。
2 楼 cjp1989 2013-02-22  
closer13 写道
看贴出来的代码还在想,怎么不用selec啊,可以直接定位到li元素了。会jquery的,上手jsoup非常快,尤其是选择器那块几乎一样。

给大家更多的自己修改,呵呵!
1 楼 closer13 2013-02-22  
看贴出来的代码还在想,怎么不用selec啊,可以直接定位到li元素了。会jquery的,上手jsoup非常快,尤其是选择器那块几乎一样。

相关推荐

    jsoup 网页信息 抓取 选择器

    jsoup特别适用于小型到中等规模的网页抓取任务,它能够高效地解析HTML,从而提取出我们需要的数据,如新闻标题、内容、作者信息等。 **CSS选择器** CSS选择器是jsoup的一大亮点。它们允许我们像在浏览器中定位元素...

    jsoup网页内容分析

    6. **网络连接**:JSoup可以直接通过`Jsoup.connect(url).get()`建立HTTP连接并下载HTML内容,简化了网页抓取的过程。 ### HTMLParser的替代原因 HTMLParser虽然也是一个强大的HTML解析库,但由于长时间未更新,...

    Http,Jsoup-网页数据抓取

    此外,Jsoup还具备良好的错误处理机制,可以处理不规范的HTML代码,极大地简化了网页抓取的复杂度。 在这个"Http,Jsoup-网页数据抓取"的示例中,开发者可能展示了如何使用Http协议发送请求到广石化教务系统的服务器...

    httpClient+jsoup 抓取网页数据

    下面我们将详细探讨这两个库及其在网页抓取中的应用。 HttpClient是由Apache软件基金会开发的一个库,主要用于执行HTTP请求。它提供了全面的HTTP协议支持,包括GET、POST、PUT等方法,以及处理Cookie、重定向、认证...

    java+jsoup抓取网页数据

    在IT行业中,网络数据抓取是一项重要的技能,它允许...不过,网页抓取技术日新月异,保持对新技术和最佳实践的关注是持续提升的关键。在实践中,你可能会遇到各种挑战,但只要掌握了基本原理和技巧,就能灵活应对。

    使用Jsoup,抓取整个网站(包括图片、js、css)

    总结来说,这个项目利用Jsoup和Java的强大力量,实现了高效、全面的网站抓取功能,不仅可以抓取HTML内容,还能抓取并保存相关资源,为离线浏览、数据备份和分析提供了便利。通过学习和掌握这种方法,开发者可以更好...

    Jsoup抓取整个网站

    **Jsoup:网页抓取与解析利器** Jsoup是一个用于处理实际世界HTML的Java库。它提供了非常方便的API,用于提取和操作数据,使用DOM,CSS和微选择器。在本篇中,我们将深入探讨如何使用Jsoup来抓取整个网站,并将其...

    jsoup网页分析jar包

    **jsoup网页分析jar包** 是一款用于Java的开源库,专门设计用于处理HTML文档,进行网页抓取和解析。它的全名是Jsoup,它提供了丰富的API来简化HTML的处理,使开发者能够轻松地提取数据,操作DOM,以及执行CSS和...

    用jsoup抓取网页数据

    本教程将深入探讨如何使用Jsoup有效地从网页中提取信息,并最终将其转化为JSON格式,为数据分析或应用程序接口(API)提供便利。 ### 1. Jsoup简介 Jsoup是由Jesse Wilson创建的一个开源项目,它的核心功能是解析...

    jsoup网页爬虫小案例

    **jsoup网页爬虫小案例** 在这个案例中,我们将探讨如何使用Java的Jsoup库来实现...通过学习和实践这个"jsoup网页爬虫小案例",你将能够掌握如何利用Jsoup创建自己的爬虫项目,为日后的数据挖掘和分析打下坚实的基础。

    jsoup1.8.1抓取爬虫工具

    **jsoup1.8.1抓取爬虫工具** jsoup是Java领域中一款非常流行的HTML解析库,它主要用于处理实际世界中的HTML,提供了一种干净、简单的API来提取和...通过深入学习和实践,你可以利用jsoup实现各种复杂的网页抓取任务。

    Android_Jsoup网页爬虫案例

    **Android Jsoup网页爬虫案例** Jsoup是一个Java库,设计用于处理真实世界的HTML,它提供了非常方便的API,用于提取和操作数据,使用DOM、CSS以及类似于jQuery的方法。在Android开发中,我们有时需要从网页上抓取...

    httpClient+jsoup抓取网页数据实例和jar包

    在IT领域,网络爬虫是获取网页...总的来说,HttpClient和Jsoup是Java开发者进行网页抓取和数据提取的得力助手。通过熟悉这两个库的使用,可以轻松地构建出强大的网络爬虫系统,从而高效地获取和分析互联网上的信息。

    Jsoup抓取一个完整的网站.rar

    请注意,进行网页抓取时需遵守网站的robots.txt文件规定以及相关的网络使用法规,避免侵犯他人的版权和隐私。同时,频繁的抓取可能会对目标服务器造成压力,因此在实际应用中应考虑合理安排抓取频率和并发控制。

    htmlunit2.8 + jsoup1.7网站数据抓取

    在IT领域,网站数据抓取是一项重要的技能,用于获取网页上的结构化信息,例如新闻文章、产品价格或用户评论。本项目重点介绍了如何利用htmlunit2.8和jsoup1.7这两个强大的库来实现这一目标。下面我们将深入探讨这两...

    jsoup分页爬取网页

    在网页爬虫领域,jsoup尤其适用于抓取和分析结构化的HTML内容。 在进行分页爬取网页时,通常涉及到以下几个关键知识点: 1. **URL构造与导航**:首先,我们需要了解如何构建正确的URL来获取不同页面的数据。分页...

    jsoup解析网页

    在进行网页抓取时,务必遵守网站的robots.txt协议,尊重版权,不滥用服务,避免对目标网站造成过大压力。同时,许多网站需要用户授权才能访问,确保你的爬虫行为符合法律法规。 总结,jsoup提供了一种高效、便捷的...

    使用Jsoup解析html网页

    1. **数据抓取**:Jsoup可以轻松抓取网页上的结构化数据,如商品价格、评论等,用于数据分析或构建应用。 2. **网站验证**:在自动化测试中,Jsoup可以帮助验证HTML元素是否按预期显示或交互。 3. **内容过滤**:...

    Java爬虫Jsoup+httpclient获取动态生成的数据

    通过上述方法,结合Jsoup和HttpClient,开发者可以构建出一个能够抓取动态网页内容的爬虫程序。这不仅适用于商品价格的抓取,也适用于其他需要抓取动态数据的场景。但需要注意的是,爬取数据时应遵守网站的robots....

    Jsoup-网络爬虫项目

    - 利用Jsoup进行网页抓取,可以实现新闻标题的收集、商品信息的获取、评论内容的抓取等多种任务。 - 学习这个项目,你可以了解到如何从网页中抓取特定数据,如链接、标题、内容等,并将这些数据保存到文件或数据库...

Global site tag (gtag.js) - Google Analytics