`
cjp1989
  • 浏览: 161285 次
  • 性别: 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非常快,尤其是选择器那块几乎一样。

相关推荐

    jsoup1.10_jsoupjar包网页_

    网页爬虫jsoup的jar包,可以帮组下载网页,方便网页爬虫爱好者抓取分析网页。

    超级课程表 课程格子 教务系统抓取 SQLite Android Studio HttpWatch Jsoup解析网页.zip

    软件开发设计:PHP、QT、...云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。

    基于Jsoup的 Android 网络爬虫,抓取海投网上的高校宣讲会信息。.zip

    其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始...

    基于Java实现网络爬虫(蜘蛛)

    网页抓取: 爬虫程序根据指定的URL,访问网页并下载页面内容。 信息解析: 使用Jsoup等HTML解析库解析网页内容,提取信息需要的信息,如标题、内容、链接等。 数据存储: 可以将解析后的数据存储到数据库或文件中,...

    java项目源码之网络爬虫(蜘蛛)的实现.rar

    网页抓取:爬虫首先通过网络请求获取网页内容。它们可以模拟浏览器行为发送 HTTP 请求,或者直接与服务器通信获取网页数据。 解析网页:获取到网页内容后,爬虫需要解析 HTML 或其他标记语言,提取出有用的信息,如...

    使用Java爬虫Jsoup写的爬取各大小说网站内容。支持多网站小说来源,程序猿划水利器。.zip

    其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始...

    Java网络蜘蛛(爬c)源码.zip

    Java的网络爬虫是一种用于从互联网上获取信息的程序,通常用于抓取网页内容、收集数据或执行其他自动化任务。网络爬虫是搜索引擎、数据挖掘和信息收集等领域的重要工具。 Java的网络爬虫通常基于Java的网络编程库,...

    搜索链接Java网络爬虫(蜘蛛)源码-zhizhu

    网页抓取:使用Java的网络编程库(如HttpURLConnection、Apache HttpClient等)来发送HTTP请求,获取网页的HTML内容。 网页解析:利用Java的HTML解析库(如Jsoup、HtmlCleaner等)来解析网页的HTML结构,提取出所需...

    Java爬虫:实现信息抓取的完整实例源码

    2. **解析网页**:获取响应的HTML内容,并使用解析库(如Jsoup)提取所需的数据。 3. **提取数据**:编写逻辑代码,从解析后的HTML中提取目标信息。 4. **存储数据**:将提取的数据保存到文件、数据库或其他存储...

    通过Jsoup的Android爬虫爬取音乐的app.zip

    其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始...

    最简单的爬虫-WebMagic 0.73 源码

    作为爬虫框架,它使用httpclient作为获取网页工具、使用Jsoup作为分析页面定位抓取内容、使用ExecutorService线程池作为定时增量抓取、Jdiy作为持久层框架。不熟悉这些名词的同学们可以先行百度一下这些都是什么,起...

    Android 本地网络小说爬虫,基于jsoup及xpath.zip

    其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始...

    Java爬虫入门——使用Jsoup解析HTML页面.zip

    其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始...

    java爬虫 jsoup,模拟登陆csdn、github.zip

    其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始...

    Java利用HtmlUtil和jsoup爬取知网中国专利数据的爬虫程序.zip

    其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始...

    Java毕业设计-[搜索链接]Java网络爬虫(蜘蛛)源码_zhizhu.rar

    2. **网页抓取**:通过HTTP/HTTPS协议获取网页源代码,支持自定义User-Agent、代理IP等设置。 3. **数据解析**:利用正则表达式或HTML解析库(如Jsoup)从网页中提取所需数据。 4. **存储处理**:支持将抓取到的数据...

    网络爬虫技术Jsoup的使用,来获取大众点评 健身场馆的有关数据.zip

    其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始...

    毕业设计Java网络爬虫(蜘蛛)源码

    该项目利用Java的强大网络编程能力,结合多线程和网络协议理解,使得用户可以轻松地收集网页内容、分析数据并存储于本地数据库或文件系统中。对于大学生而言,这个项目不仅是一个实用的技术学习资源,也是毕业设计的...

Global site tag (gtag.js) - Google Analytics