`
ducaijun
  • 浏览: 156905 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

httpClient获取Jsoup解析网页

阅读更多

因项目需要从某个网站爬取一点数据,故我将爬取记录如下,以后说不定还能用得到呢,废话少说,进入正题:

HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。本文首先介绍 HTTPClient,然后根据作者实际工作经验给出了一些常见问题的解决方法。

HttpClient 主页:http://hc.apache.org/httpcomponents-client-dev/index.html

jsoup是一个Java HTML Parser。能够从URL、文件或字符串解析HTML。利用DOM遍历或CSS选择器查找和抽取数据。能够操作HTML元素,属性和文本。能够依据一个白名单过滤用户提交的内容。

 

jsoup主页:http://jsoup.org/

具体的我就不解释了 自己度娘、谷哥去

 

要不找个例子先?!

 

比如就拿www.iteye.com首页来说吧,我想定时抓取iteye首页“精华文章”里面的数据

思路,用代码请求www.iteye.com首页,拿到首页的html代码,解析html代码,获取“精华文章”里面文章的连接地址在此请求该地址,拿下该文章,是吧?!ok,来看处理过程:

 

 先用浏览器打开www.iteye.com,可以用调试工具 firefox装上firebug chrome右击审核元素

以firefox为例:


可以发现“精华文章” 里面文章的全结构是

在id=“page”的div下面的 

   id=“content”的div下面的 

   id=“main”的div下面的

   class=“left”的div下面的

   id=“recommend”的div下面的

   ul下面的li下面的a标签

 

 

首先用httpClient获取首页html代码 我用的是httpClient4.1.2  jar包见附件 jsoup用的是jsoup-1.6.1.jar

 

/**
	 * 根据URL获得所有的html信息
	 * @param url
	 * @return
	 */
	public static String getHtmlByUrl(String url){
		String html = null;
		HttpClient httpClient = new DefaultHttpClient();//创建httpClient对象
		HttpGet httpget = new HttpGet(url);//以get方式请求该URL
		try {
			HttpResponse responce = httpClient.execute(httpget);//得到responce对象
			int resStatu = responce.getStatusLine().getStatusCode();//返回码
			if (resStatu==HttpStatus.SC_OK) {//200正常  其他就不对
				//获得相应实体
				HttpEntity entity = responce.getEntity();
				if (entity!=null) {
					html = EntityUtils.toString(entity);//获得html源代码
				}
			}
		} catch (Exception e) {
			System.out.println("访问【"+url+"】出现异常!");
			e.printStackTrace();
		} finally {
			httpClient.getConnectionManager().shutdown();
		}
		return html;
	}

上面是用httpClient获取html源文件的代码

下面就是对该html页面进行解析 得到我们想要的连接

 下面是jsoup处理得到的html源码

 

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JustTest {
	public static void main(String[] args) {
		String html = getHtmlByUrl("http://www.iteye.com/");
		if (html!=null&&!"".equals(html)) {
			Document doc = Jsoup.parse(html);
			Elements linksElements = doc.select("div#page>div#content>div#main>div.left>div#recommend>ul>li>a");
			//以上代码的意思是 找id为“page”的div里面   id为“content”的div里面   id为“main”的div里面   class为“left”的div里面   id为“recommend”的div里面ul里面li里面a标签
			for (Element ele:linksElements) {
				String href = ele.attr("href");
				String title = ele.text();
				System.out.println(href+","+title);
			}
		}
	}
}
 

 

其实jsoup的语法很简单,就是跟jquery一样用“#”取id,用“.”取样式位之后的数据 

 

其实都很简单的,当然,越规范的网页分析起来越容易,要是网页不规范就只好大家多写点代码咯

 

贴上Jsoup的API:http://jsoup.org/apidocs/

  • 大小: 116.7 KB
分享到:
评论
6 楼 ducaijun 2014-01-24  
grape88 写道
为什么需要HttpClient才能获得完整的网页? 而通过jsoup自带的就不能获得完整网页?
Document docItEye = Jsoup.connect("http://www.iteye.com").get()

jsoup的选择很强大,下面的方法即可选到:
Elements linksElements = docItEye.select("#recommend li a")

可以啊 主要是考虑哪些登录情况的网页爬去 还是HttpClient易用些吧
5 楼 grape88 2014-01-11  
为什么需要HttpClient才能获得完整的网页? 而通过jsoup自带的就不能获得完整网页?
Document docItEye = Jsoup.connect("http://www.iteye.com").get()

jsoup的选择很强大,下面的方法即可选到:
Elements linksElements = docItEye.select("#recommend li a")
4 楼 54zzb 2013-04-26  
54zzb 写道
楼主的jar包是不全的,jsoup-1.6.1.jar可以直接下载,但是httpClient提供的jar就缺少了,到官网http://hc.apache.org/downloads.cgi下载HttpClient 4.2.5 Binary下格式为zip的内容,然后解压后把lib里的jar包和jsoup-1.6.1.jar一并导入就是了

而且现在iteye首页改版了,代码中的linksElements要改为:           
Elements linksElements = doc.select("div#page>div#content>div#local>div#recommend>ul>li>a"); 
要运行楼主代码的同志们,适当的通过开发者工具看看最新的iteye首页布局

3 楼 54zzb 2013-04-26  
楼主的jar包是不全的,jsoup-1.6.1.jar可以直接下载,但是httpClient提供的jar就缺少了,到官网http://hc.apache.org/downloads.cgi下载HttpClient 4.2.5 Binary下格式为zip的内容,然后解压后把lib里的jar包和jsoup-1.6.1.jar一并导入就是了
2 楼 chen106106 2012-02-20  
楼主你好,可以上传完整的源代码吗?我试了一下,发现很多类就找不到。你提供的2个jar包都用了。
1 楼 lshhjxlj 2012-01-29  
好东西,感谢楼主分享!

相关推荐

    httpClient+jsoup 抓取网页数据

    在"网易贵金属"的例子中,你可能需要使用HttpClient发送GET请求到网易贵金属的页面,然后使用Jsoup解析返回的HTML,找到包含贵金属价格、新闻等信息的部分,从而实现数据抓取。实际操作时,可能还需要考虑登录、分页...

    httpClient采集jsoup解析

    例如,如果你想要抓取一个新闻网站的最新文章标题,可以先使用HttpClient发送请求获取网页源码,再用Jsoup解析HTML,找到包含文章标题的元素: ```java CloseableHttpClient httpClient = HttpClients.create...

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

    以下是一个简单的示例,展示如何使用HttpClient获取网页内容,然后用Jsoup解析: ```java import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache....

    爬虫:httpclient+jsoup

    在IT领域,网络爬虫是一种自动化程序,用于从...总之,HttpClient和Jsoup是Java爬虫开发中的两个强大工具,它们结合使用能有效地抓取和解析网页信息。理解它们的工作原理和用法,对于构建高效的网络爬虫至关重要。

    HttpClient和jsoup架包

    首先,HttpClient发送HTTP请求获取网页源代码,然后Jsoup解析这个源代码,从中提取所需的数据。这种方式对于需要登录、处理表单或者需要处理JavaScript动态生成内容的网站尤为有用。 在压缩包中的"jsoup-1.8.1.jar...

    httpClient和jsoup整合,支持 HTTP 协议的客户端编程工具包

    本文将详细介绍如何将HttpClient与Jsoup整合,以便在进行网络请求时获取并解析网页数据。 HttpClient是Apache软件基金会的一个开源项目,提供了全面的HTTP协议支持,包括标准方法(GET、POST等)、连接管理、重定向...

    HttpClient + Jsoup 模拟登陆,解析HTML,信息筛选(广工图书馆)

    接着用Jsoup解析HTML,筛选出需要的信息,比如图书列表、借阅记录等。 在实际应用中,需要注意以下几点: - **处理重定向**:HttpClient允许我们配置是否跟随重定向,有时服务器在登录成功后会返回302重定向。 - ...

    HttpClient Jsoup爬取天气预报

    这篇博客“HttpClient Jsoup爬取天气预报”可能讲述了如何结合这两者来获取并解析网页上的天气预报信息。 首先,HttpClient允许开发者发送各种HTTP请求(如GET、POST等)到服务器,并接收响应。在爬虫应用中,通常...

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

    本文主要讲述如何利用Java编程语言中的Jsoup库和HttpClient工具包来获取和解析动态生成的数据,特别是那些通过JavaScript动态加载的数据。 ### Java爬虫基础 Java爬虫是指使用Java语言编写的一类程序,这些程序...

    基于SSM+maven+httpClient+jsoup实现小说网站项目.zip

    在这个项目中,开发者使用了Spring、SpringMVC和MyBatis(简称SSM)作为主要的后端框架,结合maven进行项目管理和依赖管理,同时利用httpClient进行网络请求,通过jsoup解析网页内容,实现了对小说数据的抓取和处理...

    HttpClient ,jsoup和 HtmlParser ,htmllexer实现简易爬虫用到的jar包

    在爬虫项目中,jsoup是解析网页内容、提取结构化数据的关键工具,它可以高效地抓取和处理网页中的链接、文本、图片等信息。 HtmlParser和htmllexer是两个用于解析HTML的库,它们主要用于低级别的HTML解析。...

    基于SSM+maven+httpClient+jsoup实现的java爬虫项目,一个完整的小说网站.zip

    该项目是一个使用Java编程语言开发的爬虫程序,它结合了Spring、SpringMVC(SSM)框架、Maven构建工具以及httpClient和jsoup库来抓取和解析网页内容,特别是针对小说网站的数据获取。以下是对这个项目各部分的详细...

    Jsoup解析Html获取新闻列表

    在本文中,我们将深入探讨如何利用Jsoup解析HTML,以便获取新闻列表等网页数据。首先,让我们了解Jsoup的基本用法,然后通过实例演示如何从一个HTML页面中提取新闻列表。 1. **Jsoup简介** - Jsoup是由Jonathon ...

    jsoup+httpclient+jar包

    HttpClient与JSoup结合使用,可以实现更高级的网页访问和数据获取。 **结合使用JSoup和HTTPClient** 将JSoup与HTTPClient结合,可以创建一个高效且灵活的网页爬虫。首先,HTTPClient负责发起HTTP请求,获取网页的...

    Java爬虫【一篇文章精通系列-案例开发-巨细】HttpClient5 + jsoup + WebMagic + spider

    首先,HttpClient5是Apache基金会开发的一个HTTP客户端库,它是Java爬虫获取网页内容的基础。HttpClient提供了对HTTP协议的强大支持,包括各种HTTP方法(GET、POST等)、连接管理、重试策略以及请求和响应的处理。...

    jsoup httpclient 爬取网页并下载google图标

    总结来说,这个项目或教程涉及使用Jsoup解析和抓取网页,用HttpClient下载资源,同时利用Apache Commons库增强功能,提供了一种综合运用Java网络编程技术的实例。在实际开发中,这样的技术可以广泛应用于数据抓取、...

    针对 httpclient4.* 绕验证码获取公司信息 包括 jsoup网页信息的爬虫及htmlUnit对动态网站信息的抓取

    3. 获取网页响应后,用Jsoup解析HTML,提取静态内容,如公司名称、简介等基本信息。 4. 对于动态加载的内容,利用HtmlUnit模拟浏览器行为,执行页面上的JavaScript,确保所有内容都已加载完毕。 5. 使用HtmlUnit的...

    jsoup+httpclient j简单爬虫

    将 JSoup 与 HttpClient 结合,我们可以在 HttpClient 获取 HTML 后,用 JSoup 解析和处理数据。这样,我们就能构建一个基本的爬虫,能够从指定网页抓取信息,甚至处理动态加载的内容。 在实际项目中,我们还需要...

Global site tag (gtag.js) - Google Analytics